![]() |
Nach bestimmer Variable bestimme Aktion ausführen
Servus,
ich knüpfe an der ![]() Ich möchte, dass wenn der Zahlenwert im Label Zahl unter bspw. 3 ist, ein Bild sichtbar wird (Was vorher hidden ist). Wenn der Wert unter 6 liegt (Aber noch über 2) ein anderes usw.. Wie mache ich das? Hab schon mit if then probiert aber geht alles nicht :?. |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Delphi-Quellcode:
EinBild.Visible := EineZahl < 3;
EinAnderesBild.Visible := (EineZahl > 2) and (EineZahl < 6); |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Was hast du mit "if then probiert"?
Wenn was nicht geht, dann sollte man auch zeigen was nicht geht. Wobei ich wette, daß es doch geht. Einfach mal bauminas Code anhand deiner gewollten Beschreibung (sichtbar wird ... vorher hidden ist) umgebaut.
Delphi-Quellcode:
if EineZahl < 3 then
EinBild.Visible := True; if (EineZahl > 2) and (EineZahl < 6) then EinAnderesBild.Visible := True; |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Am elegantesten löst du das mit einer Eigenschaft (
Delphi-Quellcode:
).
property
![]()
Delphi-Quellcode:
Im OnCreate-Event der Form einfach noch
TMyForm = class( TForm )
Wert_Label : TLabel; Image1 : TImage; Image2 : TImage; private FWert : integer; procedure SetWert( const Value : Integer ); procedure PresentWert; public property Wert : Integer read FWert {Getter} write SetWert {Setter}; end; procedure TMyForm.SetWert( const Value : Integer ); begin if Value = FWert then Exit; FWert := Value; PresentWert; end; procedure TMyForm.PresentWert; begin Wert_Label.Caption := IntToStr( FWert ); Image1.Visible := ( FWert <= 2 ); Image2.Visible := ( FWert > 2 ) and ( FWert <= 5 ); end;
Delphi-Quellcode:
aufrufen und die Form ist passend vorbereitet.
PresentWert;
|
AW: Nach bestimmer Variable bestimme Aktion ausführen
Eventuell, wenn man nicht möchte oder sicherstellen kann, daß bereits in der DFM (Formdesigner) die richtigen Werte stehen (Text des Labels und Sichtbarkeit der anderen Dinge),
dann könnte man jetzt noch im OnCreate ebenfalls das PresentWert aufruft, womit die Oberfläche auch schon zu Beginn immer richtig dargestellt wird. (das trifft auch auf die aktiven Seiten von PageControls zu, die man bei der Entwicklung gern mal verstellt ... hier hätte ich mir ein alternatives "StartPage"-Property gewünscht) |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Ok, mein Code schaut jetzt so aus:
Code:
Wenn ich 6/10 richtig hab, zeigt es mir jedoch statt Ok Schlecht an, wenn ich 10/10 richtig hab wird mir das Bild von Gut angezeigt.. ?
procedure TErgebnisse.FormActivate(Sender: TObject);
begin if n < 4 then Schlecht.Visible := True; if (n > 3) and (n < 7) then Ok.Visible := True; if (n > 6) and (n < 10) then Gut.Visible := True; if n = 10 then Perfekt.visible := True; end; |
AW: Nach bestimmer Variable bestimme Aktion ausführen
.. wie schaut es mit case aus?
Delphi-Quellcode:
Grüße
case n of
0..3 : Schlecht.Visible := True; 4..6 : Ok.Visible := True; 7..9 : Gut.Visible := True; 10 : Perfekt.visible := True; end; Klaus |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Liegt das Schlecht zufällig "über" dem Ok drüber und verdeckt es somit?
Der Code von baumina und Sir Rufo stezen das visible nicht nur auf True, sondern auch auf false, wenn es nicht sichtbar ist.
Delphi-Quellcode:
Das würde dann Folgendem entsprechen und jetzt rade mal, was in deinem Code also noch fehlen würde. :angel:
Schlecht.Visible := n < 4;
Delphi-Quellcode:
@Klaus01: Vorher alles erstmal ausblenden.
if n < 4 then
Schlecht.Visible := True else Schlecht.Visible := False; (wenn der code mehrfach aufgerufen werden soll, bzw. wenn die Komponenten vorher noch sichtbar waren) |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Du schaltest die Bilder ja auch nur an, und nicht wieder ab.
Wenn das gleiche Form jetzt mehrfach hintereinander angezeigt wird, dann sind irgendwann alle Bilder sichtbar, und es wird vermutlich das angezeigt, was zuvorderst liegt. Du solltest im Initialisierungs-Code entweder alle Bilder vorher auf visible := false setzen, oder folgendes machen:
Code:
procedure TErgebnisse.FormActivate(Sender: TObject);
begin Schlecht.Visible := n < 4; Ok.Visible := (n > 3) and (n < 7); Gut.Visible := (n > 6) and (n < 10); Perfekt.visible := n = 10; end; |
AW: Nach bestimmer Variable bestimme Aktion ausführen
Und es gibt noch eine weiter Möglichkeit, die man nciht unterschätzen sollte.
Es gibt nur ein Bild (TImage) auf der Form und der Code schaltet nun nicht die Sichtbarkeit, sondern läd das passende Bild dort rein. (aus Dateien oder besser noch aus den Resourcen oder einer ImageList) Macht das GUI-Design auch einfacher, wenn da nicht zigtausend Komponenten übereinander liegen. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz