In Abhänigkeit von Label.Text ein Bild anzeigen


#1

Hallo zusammen,

wie lautet denn die Codezeile wenn ich ein Bild in Abhänigkeit von einem Label Text anzeigen will?

Für Hintergrund-/Schriftfarben habe ich das schon:

if (lbStatus.Text.StartsWith("*ENTNO"))
{
    flexPanel2.Colors.CustomBackColor = Color.LightSkyBlue;
    lbStatus.Colors.CustomForeColor = Color.Black;
...
}

Danke und viele Grüße
Manuel Haas


#2

Hallo Herr Haas,

ich gehe hier davon aus, dass Sie von einem FlexPictureEdit sprechen.

Normalerweise würden Sie ja die Eigenschaft LoadFrom verwenden, wodurch ein Bild beim Aufruf des Bildschirms automatisch geladen wird, wenn ein Value gesetzt ist.

Die ganzen FlexControls die über eine solche Value-Bindung mittels LoadFrom verfügen, haben auch Laderoutinen fürs Scripting. In diesem Fall ist das die Routine LoadFromFile.

Aus Performancegründen sollten Sie in diesem Fall die LoadFrom Eigenschaft leeren, damit beim Aufruf des Bildschirms nicht umsonst versucht wird, ein Bild zu laden.

Die einfachste Variante ist

var filename = @"C:\Pfad\logo.png";
flexPictureEdit1.LoadFromFile(filename);

Ich empfehle Ihnen die Verwendung eines Pfades aus den Einstellungen,
da feste Pfade im Code nicht sehr wartungsfreundlich sind :slight_smile:

var imagename = "1";       // der Name würde von Ihrer Logik gefüllt
var pathname = ML.GetSetting("Pictures");   
var filename = Path.Combine(pathname, imagename+".jpg");
flexPictureEdit1.LoadFromFile(filename);

Tip: Verwenden Sie Path.Combine um Verzeichnisnamen zusammenzusetzen.
Sie ersparen sich damit das umständliche Handling mit den Slashes und Sonderbehandlungen bei Root-Verzeichnissen etc. .


#3

Hallo Herr Hartmann,

hat schonmal ganz gut funktionert. Danke dafür :slight_smile:

Ein Problem bleibt leider noch:
Also ich habe verschiedene Status (7 Stück) für diese habe ich ein Bild hinterlegt. Es kommt aber auch oft vor, dass kein Status vergeben ist, das heist in diesem Fall möchte ich auch kein Bild anzeigen.

Was muss da dann in der else Bedingung für das flexPictureEdit stehen?

else
{
    flexPanel2.Colors.CustomBackColor = Color.LightGray;
    lbStatus.Colors.CustomForeColor = Color.Black;
    flexPictureEdit1.???
}

Danke :slight_smile:


#4

Hallo Herr Haas,

wie so oft führen mehrere Wege nach Rom :slight_smile:

Die einfachste Variante ist das Bild mit Hilfe der Eigenschaft Visible ein- bzw. auszublenden.
Wenn es angezeigt werden soll auf true, andernfalls auf false setzen.

Bei der “normalen” Bindung über den Value wird allerdings ein “No Photo” Bild angezeigt.
Das erreichen Sie mit folgender Zeile.

flexPictureEdit1.LoadFromFile("");

Hierbei findet kein Zugriff auf das Dateisystem statt.