Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi a>=100 (https://www.delphipraxis.net/186978-%3D100.html)

AlexII 19. Okt 2015 10:59

AW: a>=100
 
Zitat:

Zitat von Luckie (Beitrag 1319018)
Generells Problem bei dir: Datenhaltung in einer visuellen Komponente. Stichwort: Trennung von der Darstellung und der Datenverarbeitung.

Hast Du ein Beispiel wie man das getrennt hält?

p80286 19. Okt 2015 11:09

AW: a>=100
 
Na wenn die Ausgabe in einem Label z.B. der Inhalt der Variablen "RecordCount" ist, dann hast Du die Möglichkeit
Delphi-Quellcode:
if RecordCount >100 then Panel1.colour:=blue;
oder aber
Delphi-Quellcode:
if Strtoint(label1.caption)>100 then Panel1.Color:=blue;
Und wenn Du es halbwegs richtig machen willst, muß noch jede Menge Fehlerprüfung in die zweite Möglichkeit integriert werden. Dazu bin ich aber jetzt zu bequem.

Und wahrscheinlich ist die angestrebete Farbänderung sowieso davon abhängig welchen Wert "RecordCount" hat und nicht welchen Inhalt die Caption eines Labels.

Gruß
K-H

BUG 19. Okt 2015 13:33

AW: a>=100
 
Systematisiert ist dieser Ansatz in MVC (und verwandten Mustern: MVVM, ... ).

Mavarik 19. Okt 2015 15:38

AW: a>=100
 
Zitat:

Zitat von AlexII (Beitrag 1319048)
Zitat:

Zitat von Luckie (Beitrag 1319018)
Generells Problem bei dir: Datenhaltung in einer visuellen Komponente. Stichwort: Trennung von der Darstellung und der Datenverarbeitung.

Hast Du ein Beispiel wie man das getrennt hält?

Wenn ich dazu komme mache ich mal ein "richtiges" Beispiel...


Beispiel: (Bitte so nicht programmieren. Da fehlt noch ganz viel und auf man(n) nutzt keine festen Links... )

Form:

Delphi-Quellcode:
TForm1 = class(TForm)
    VorName: TEdit;
    PLZ: TEdit;
    Ort: TEdit;
    procedure AllChange(Sender: TObject);
  public
    Procedure Data2Form;
    Procedure Form2Data;
    { Public-Deklarationen }
  end;

 procedure TForm1.AllChange(Sender: TObject);
 begin
   Form2Data;
 end;

 Procedure TForm1.Data2Form;
 begin
   VorName.Text := StupidData.FVorName;
   PLZ.Text := StupidData.FPLZ;
   Ort.Text := StupidData.FOrt;
 end;

 Procedure TForm1.Form2Data;
 begin
   StupidData.FVorName := VorName.Text;
   StupidData.FPLZ := PLZ.Text;
   StupidData.FOrt := Ort.Text;
 end;
Und den Record...(Auch hier: Bitte nicht auf Form1 usw. zugreifen)
Soll nur ein Beispiel sein...

Delphi-Quellcode:
Type
   TStupidData = Record
                   FVorName : String;
                   FPLZ : String;
                   FOrt : String;
                   Procedure SetVorname(AValue : String);
                   Procedure SetPLZ(AValue : String);
                   Procedure SetOrt(AValue : String);
                   Property VorName : String write SetVorName;
                   Property PLZ : String write SetPLZ;
                   Property ORT : String write SetOrt;
                 end;

var
   StupidData : TStupiddata;

implementation

Procedure TStupidData.SetVorname(AValue : String);
begin
  FVorName := AValue;
  Form1.Data2Form;
end;

Procedure TStupidData.SetPLZ(AValue : String);
begin
  FPLZ := AValue;
  Form1.Data2Form;
end;

Procedure TStupidData.SetOrt(AValue : String);
begin
  FORT := AValue;
  Form1.Data2From;
end;

alleinherrscher 19. Okt 2015 15:52

AW: a>=100
 
Hallo mal wieder! Luckie hat es ja schon auf den Punkt gebracht, aber vielleicht bedarf es noch einer etwas "anfänger-gerechteren" Erklärung.

Zitat:

Zitat von DarthYoda (Beitrag 1319006)
Guten Abend,

Wie kann man das schreiben, wenn die Caption (alles Zahlenwerte) eines Labels a>=100 ist, das dann irgendwas passieren soll .

Danke im Vorraus

LG DarthYoda

Aus deiner Fragestellung kann man entnehmen, dass du denkst, in deiner Caption würden Zahlenwerte (Integers) gespeichert. Dies ist aber nicht der Fall. Wenn du in der Delphi Hilfe nachschaust, wirst du sehen, dass TCaption vom Typ String ist (http://docs.embarcadero.com/products..._TCaption.html). Das bedeutet, dass in deiner Caption also keine Zahlenwerte gespeichert werden, sondern ein String, also ein Text, der natürlich eine Zahl darstellen kann. Genauso gut könnte dort aber auch "Blub5" drin stehen. Wenn du dir als Programmierer sicher bist, dass in einem String ein Integer dargestellt ist, kannst du mit StrToInt diesen String in einen Interger umwandeln. Erst dann macht dein Vergleich a>=100 sinn. Ansonsten würdest du quasi Äpfel (Strings) mit Birnen (Integers) vergleichen.

Besten Gruß,
Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.
Seite 2 von 2     12   

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