Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure in Checkbox nicht nochmal in OnShow schreiben? (https://www.delphipraxis.net/50610-procedure-checkbox-nicht-nochmal-onshow-schreiben.html)

Hallo_Thomas 28. Jul 2005 10:40


procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Ich benötige 2x den exakt gleichen Text in der Checkbox und in Form2.OnShow, damit beim starten die Einstellungen übernommen werden.
Gibt es da ne Möglichkeit/ nenn Befehl, dass ich das ganze nur einmal schreiben muss.



Delphi-Quellcode:
procedure TForm2.CheckBox15Click(Sender: TObject);
begin
  if Form2.checkbox15.Checked then
    begin
      Form2.blau.Enabled:=True;
      Form2.pink.Enabled:=True;
      Form2.E12z.Enabled:=True;
      Form2.blau.Color:=clWindow;
      Form2.pink.Color:=clWindow;
      Form2.E12z.Color:=clWindow;
      begin
        If (E12Z.ItemIndex = 1)
        Or (E12Z.ItemIndex = 3)
        Or (E12Z.ItemIndex = 4)
        Or (E12Z.ItemIndex = 5) Then
        Begin
          A12Z.Enabled:=False;
          A12Z.Color:=cl3DLight;
        end else
        begin
          A12Z.Enabled:=True;
          A12Z.Color:=clWindow;
        end;
      end;
    end else
    begin
      Form2.blau.Enabled:=False;
      Form2.pink.Enabled:=False;
      Form2.E12z.Enabled:=False;
      Form2.A12z.Enabled:=False;
      Form2.blau.Color:=cl3DLight;
      Form2.pink.Color:=cl3DLight;
      Form2.E12z.Color:=cl3DLight;
      Form2.A12z.Color:=cl3DLight;
   end;
end;
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
  if Form2.checkbox15.Checked then
    begin
      Form2.blau.Enabled:=True;
      Form2.pink.Enabled:=True;
      Form2.E12z.Enabled:=True;
      Form2.blau.Color:=clWindow;
      Form2.pink.Color:=clWindow;
      Form2.E12z.Color:=clWindow;
      begin
        If (E12Z.ItemIndex = 1)
        Or (E12Z.ItemIndex = 3)
        Or (E12Z.ItemIndex = 4)
        Or (E12Z.ItemIndex = 5) Then
        Begin
          A12Z.Enabled:=False;
          A12Z.Color:=cl3DLight;
        end else
        begin
          A12Z.Enabled:=True;
          A12Z.Color:=clWindow;
        end;
      end;
    end else
    begin
      Form2.blau.Enabled:=False;
      Form2.pink.Enabled:=False;
      Form2.E12z.Enabled:=False;
      Form2.A12z.Enabled:=False;
      Form2.blau.Color:=cl3DLight;
      Form2.pink.Color:=cl3DLight;
      Form2.E12z.Color:=cl3DLight;
      Form2.A12z.Color:=cl3DLight;
   end;
end;

malo 28. Jul 2005 10:42

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Delphi-Quellcode:
procedure EineProzedur; // Name kann man (fast) beliebig wählen, sollte dann aber auch beim Aufruf geändert werden!
begin
if Form2.checkbox15.Checked then
    begin
      Form2.blau.Enabled:=True;
      Form2.pink.Enabled:=True;
      Form2.E12z.Enabled:=True;
      Form2.blau.Color:=clWindow;
      Form2.pink.Color:=clWindow;
      Form2.E12z.Color:=clWindow;
      begin
        If (E12Z.ItemIndex = 1)
        Or (E12Z.ItemIndex = 3)
        Or (E12Z.ItemIndex = 4)
        Or (E12Z.ItemIndex = 5) Then
        Begin
          A12Z.Enabled:=False;
          A12Z.Color:=cl3DLight;
        end else
        begin
          A12Z.Enabled:=True;
          A12Z.Color:=clWindow;
        end;
      end;
    end else
    begin
      Form2.blau.Enabled:=False;
      Form2.pink.Enabled:=False;
      Form2.E12z.Enabled:=False;
      Form2.A12z.Enabled:=False;
      Form2.blau.Color:=cl3DLight;
      Form2.pink.Color:=cl3DLight;
      Form2.E12z.Color:=cl3DLight;
      Form2.A12z.Color:=cl3DLight;
   end;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  EineProzedur;
end;

procedure TForm2.CheckBox15Click(Sender: TObject);
begin
  EineProzedur;
end;
Du musst einfach nur eine eigene Prozedur schreiben. Einfach das Schlüsselwort "Procedure", danach der Prozedurenname (ggf. Parameter), dann ein Semikolon. Und danach der Anweisungsblock (Begin-End). In den Anweisungsblock schreibst du deinen Code rein. Dann kannst du später die Prozedur aufrufen. Aber achtung! Die Prozedur muss VOR dem COde, der die Prozedur aufruft!

//edit: Das natürlich nur, wenn die Prozedur vorher nicht deklariert wurde, zum Beispiel als Methode ;)

Hallo_Thomas 28. Jul 2005 10:47

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Ich Dank Dir!

fylo 28. Jul 2005 11:17

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Moin,

wenn du ein TForm2 vor den Prozedurnamen schreibst und die Prozedure noch im Privatebereich der Form integierst kannst du in deiner Prozedure die ganzen Form2's weglassen.
Delphi-Quellcode:
type
  TForm2 = class(TForm)
    Label1: TLabel;
    ...
  private
    { Private-Deklarationen }
    procedure EineProzedure;
  public
    { Public-Deklarationen }
  end;
und aus
Delphi-Quellcode:
procedure EineProzedur;
begin
...
end;
machst du
Delphi-Quellcode:
procedure TForm2.EineProzedur;
begin
...
end;
und läßt anschließend alle Form2-Ausdrücke weg :thumb:

BlackJack 28. Jul 2005 13:26

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
du kannst auch einfch nur eine der beiden proceduren deines ausgangspostings stehen lassen, und die anderen jeweils beim OnClick der CheckBox15 und beim OnShow der Form angeben, da beide proceduren ja auch die selben parameter benötigen. ist vielleicht einfacher.

ach ja und wenn du schon eine methode einer klasse schreibst, dann lass bitte das Form2 die ganze zeit da weg - wenn du jetzt z.b. eine 2. form namens Form3 erstellen würdest, könntest du sonst diese beiden proceduren so nicht benutzen, da sie komplett nur mit der Form2 arbeiten.

Die Muhkuh 28. Jul 2005 13:30

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Zitat:

Zitat von BlackJack
wenn du jetzt z.b. eine 2. form namens Form2 erstellen würdest,

dann würde Delphi motzen, weil der Bezeichner schon vorhanden ist :zwinker:

BlackJack 28. Jul 2005 13:31

Re: procedure in Checkbox nicht nochmal in OnShow schreiben?
 
Zitat:

Zitat von Spider
Zitat:

Zitat von BlackJack
wenn du jetzt z.b. eine 2. form namens Form2 erstellen würdest,

dann würde Delphi motzen, weil der Bezeichner schon vorhanden ist :zwinker:

arrg, ich meine natürlich Form3 oder so... :wall:


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