Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Quellcode zur Laufzeit ändern? (https://www.delphipraxis.net/101851-quellcode-zur-laufzeit-aendern.html)

Störtebeker 19. Okt 2007 00:20


Quellcode zur Laufzeit ändern?
 
Hi

ich habe in meinem Programm eine Bildschirmtastatur integriert. (Anhang s. Beitrag Beitrag: Bildschirmtastatur)

Zu dieser Tastatur gehört auch ein NUM-Feld, dessen Zahlen am Anfang deaktiviert sind. Zum Aktivieren klicke ich auf NUM. Nun möchte ich die Zahlen auch wieder über diese Taste deaktivieren. Dazu müsste ich aber beim aktivieren der Zahlen den Code des Buttons ändern, damit diser dann den Code hat, die Tasten zu deaktivieren und wieder umgekehrt.

Das ist der Code, um das Zahlenfeld zu aktivieren:

Delphi-Quellcode:
procedure TForm1.Button84Click(Sender: TObject);
begin
Panel16.Color:=clLime;
Button85.Enabled:=true;
Button86.Enabled:=true;
Button87.Enabled:=true;
Button88.Enabled:=true;
Button99.Enabled:=true;
Button96.Enabled:=true;
Button97.Enabled:=true;
Button98.Enabled:=true;
Button93.Enabled:=true;
Button94.Enabled:=true;
Button95.Enabled:=true;
Button90.Enabled:=true;
Button91.Enabled:=true;
Button92.Enabled:=true;
end;
Der Code müsste dann praktisch so aussehen:

Delphi-Quellcode:
procedure TForm1.Button84Click(Sender: TObject);
begin
Panel16.Color:=clGreen;
Button85.Enabled:=false;
Button86.Enabled:=false;
Button87.Enabled:=false;
Button88.Enabled:=false;
Button99.Enabled:=false;
Button96.Enabled:=false;
Button97.Enabled:=false;
Button98.Enabled:=false;
Button93.Enabled:=false;
Button94.Enabled:=false;
Button95.Enabled:=false;
Button90.Enabled:=false;
Button91.Enabled:=false;
Button92.Enabled:=false;
end;
und dann natürlich wieder umgekehrt.

Wie muss ich das machen?

nachti1505 19. Okt 2007 00:34

Re: Quellcode zur Laufzeit ändern?
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)

  private
   bNumPressed: boolean;

  end;
bNumPressed noch im FormCreate oder sonstwo initialisieren

Delphi-Quellcode:
procedure TForm1.Button84Click(Sender: TObject);
begin
  bNumPressed := not bNumPressed;
  Button85.Enabled := bNumPressed;
  [...]
  Button92.Enabled := bNumPressed;

  if bNumPressed then Panel1.Color := clLime
                 else Panel1.Color := clGreen;
end;

RavenIV 19. Okt 2007 07:54

Re: Quellcode zur Laufzeit ändern?
 
Zitat:

Zitat von Störtebeker
Zu dieser Tastatur gehört auch ein NUM-Feld, dessen Zahlen am Anfang deaktiviert sind. Zum Aktivieren klicke ich auf NUM. Nun möchte ich die Zahlen auch wieder über diese Taste deaktivieren. Dazu müsste ich aber beim aktivieren der Zahlen den Code des Buttons ändern, damit diser dann den Code hat, die Tasten zu deaktivieren und wieder umgekehrt.

Also von Dir hätte ich erwartet, dass Du schon mal was von Boolean, Flags und if-Abfragen gehört hast.

Die Lösung hat ja mein Vorredner schon geschrieben...

uligerhardt 19. Okt 2007 09:21

Re: Quellcode zur Laufzeit ändern?
 
Zitat:

Zitat von Störtebeker
Delphi-Quellcode:
procedure TForm1.Button84Click(Sender: TObject);
begin
Panel16.Color:=clLime;
Button85.Enabled:=true;
Button86.Enabled:=true;
Button87.Enabled:=true;
Button88.Enabled:=true;
Button99.Enabled:=true;
Button96.Enabled:=true;
Button97.Enabled:=true;
Button98.Enabled:=true;
Button93.Enabled:=true;
Button94.Enabled:=true;
Button95.Enabled:=true;
Button90.Enabled:=true;
Button91.Enabled:=true;
Button92.Enabled:=true;
end;

Was hältst du davon, deine Variablen mal umzubenennen? ButtonPlus wäre doch irgendwie sehr viel besser zu verstehen als Button47. :-)

Uli.

Phoenix 19. Okt 2007 10:20

Re: Quellcode zur Laufzeit ändern?
 
Eine andere Idee wäre es, den Eventhandler umzubiegen.

Du machst einen Event OnActivate und einen OnDeactivate.
Mit ButtonToggle.OnClick := OnActivate; bzw. ButtonToggle.OnClick := OnDeactivate; Kannst Du also festlegen, welche Methode beim nächsten Klick ausgelöst wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 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