AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Nach bestimmer Variable bestimme Aktion ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Nach bestimmer Variable bestimme Aktion ausführen

Ein Thema von Fractal · begonnen am 22. Apr 2014 · letzter Beitrag vom 22. Apr 2014
Antwort Antwort
Seite 1 von 3  1 23      
Fractal

Registriert seit: 16. Apr 2014
9 Beiträge
 
#1

Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 13:22
Servus,

ich knüpfe an der Stelle an.

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 .
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 13:28
Delphi-Quellcode:
EinBild.Visible := EineZahl < 3;
EinAnderesBild.Visible := (EineZahl > 2) and (EineZahl < 6);
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 13:49
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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Apr 2014 um 13:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:07
Am elegantesten löst du das mit einer Eigenschaft (property ).
http://docwiki.embarcadero.com/RADSt.../Eigenschaften
Delphi-Quellcode:
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;
Im OnCreate-Event der Form einfach noch PresentWert; aufrufen und die Form ist passend vorbereitet.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Apr 2014 um 14:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:42
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Apr 2014 um 14:54 Uhr)
  Mit Zitat antworten Zitat
Fractal

Registriert seit: 16. Apr 2014
9 Beiträge
 
#6

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:46
Ok, mein Code schaut jetzt so aus:
Code:
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;
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.. ?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:56
.. wie schaut es mit case aus?

Delphi-Quellcode:
case n of
  0..3 : Schlecht.Visible := True;
  4..6 : Ok.Visible := True;
  7..9 : Gut.Visible := True;
    10 : Perfekt.visible := True;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:57
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.

Schlecht.Visible := n < 4; Das würde dann Folgendem entsprechen und jetzt rade mal, was in deinem Code also noch fehlen würde.
Delphi-Quellcode:
if n < 4 then
  Schlecht.Visible := True
else
  Schlecht.Visible := False;
@Klaus01: Vorher alles erstmal ausblenden.
(wenn der code mehrfach aufgerufen werden soll, bzw. wenn die Komponenten vorher noch sichtbar waren)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#9

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 14:59
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;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

AW: Nach bestimmer Variable bestimme Aktion ausführen

  Alt 22. Apr 2014, 15:08
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz