Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Problem mit Code, seit Komponente zur Laufzeit erstellt werd (https://www.delphipraxis.net/128726-problem-mit-code-seit-komponente-zur-laufzeit-erstellt-werd.html)

nuclearping 5. Feb 2009 08:29

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Erbsenzählerei. ;)

mkinzler 5. Feb 2009 08:38

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Nein OOP :mrgreen:

himitsu 5. Feb 2009 09:17

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
du meinst so zur Sicherheit, falls er da mal was Anderes macht,
Code:
BracketOpen[zaehler]:= [b]TCheckBox[/b].Create(self);
damit wohl die folgenden Casts nicht plötzlich meckern. :angel2:

Delphi-Quellcode:
if (Sender is TCheckBox) and (BracketOpen[i] = Sender) then

// hier man muß auch überall Kürzen
if BracketOpen[i] = (Sender as TCheckBox) then ...........|

nahpets 5. Feb 2009 12:56

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Hallo,

eventuell geht's ja so:
Delphi-Quellcode:
procedure TForm1.CheckBoxSettingsChange(Sender: TObject);
  var i:Integer;
begin
  i:=0;
  while i < High(BracketOpen) do begin
    if BracketOpen[i] = Sender then
      Break;
    inc(i);
  end;
  if BracketOpen[i] = Sender then
  begin
    if (BracketOpen[i].Checked) then
    begin
      BracketOpen[i].Font.Color:=clRed;
      BracketOpen[i].Font.Bold:=true;
    end
    else
    begin
      BracketOpen[i].Font.Color:=clBlack;
      BracketOpen[i].Font.Bold:=false;
    end;
    // Die beiden Zeilen können alternativ genutzt werden,
    // es ist nur eine erforderlich, welche ist Geschmacksache.
    BracketOpen[i].Refresh; // <- Neu zeichnen lassen
    BracketOpen[i].Repaint; // <- Neu zeichnen lassen
  end;
end;

Bomberbb 5. Feb 2009 13:52

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Die Schleife vorweg kannst Du Dir auch ersparen.
Ich würde es so schreiben...

Delphi-Quellcode:
procedure TForm1.CheckBoxSettingsChange(Sender: TObject);
begin
  with Sender as TCheckbox do
  begin
    Font.Bold:=checked;
    if checked then
      Font.Color:=clRed      
    else
      Font.Color:=clBlack;
    Refresh;
  end;
end;

luckybug83 5. Feb 2009 16:12

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Hallo,
erstmal VIELEN DANK für die vielen Antworten!!! :thumb:

Ok, dass euch meine Schleife verwirrt ist gut möglich, da ihr den Rest von meinem Code nicht kennt :) sie aber schon ihren Sinn hat ;)...

Habe sämtliche Möglichkeiten, die ihr mir alle gegeben habt ausprobiert, aber nach wie vor wird es zwar rot aber immernoch nicht fett!

Naja vielleicht werde ich einfach auf das fett verzichten!

Liebe Grüsse!

nahpets 5. Feb 2009 16:50

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Hallo,

habe kein Lazarus/FreePascal.
Bei Delphi geht das so:
Delphi-Quellcode:
CheckBox.Font.Style := fsBold;
Gibt es die Möglichkeit bei Dir eventuell auch?

Muetze1 5. Feb 2009 17:02

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Zitat:

Zitat von nahpets
Hallo,

habe kein Lazarus/FreePascal.
Bei Delphi geht das so:
Delphi-Quellcode:
CheckBox.Font.Style := fsBold;
Gibt es die Möglichkeit bei Dir eventuell auch?

Dann hast du ein anderes Delphi als alle anderen hier. Style ist eine Menge (set) und somit musst du auch eine Menge und nicht einen Aufzählungsmember zuweisen. Also geht es bei Delphi so:

Delphi-Quellcode:
CheckBox.Font.Style := [fsBold];

luckybug83 6. Feb 2009 16:11

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Hi,
ja diese Möglichkeit gibt es bei Lazarus auch, aber auch diese funktioniert nicht :(

Grüsse

inherited 8. Feb 2009 14:05

Re: Problem mit Code, seit Komponente zur Laufzeit erstellt
 
Ich habe mal versucht das zu reproduzieren, bei mir klappt folgendes allerdings wunderbar:

man nehme ein neues Projekt, ziehe eine CheckBox auf das Formular, erstelle eine OnClick-Methode dafür. Ins OnCreate kommt
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TCheckBox.Create(self) do
  begin
    SetBounds(200,10,100,20);
    Parent:=self;
    Caption := 'Dynamisch';
    OnClick:=@CheckBox1Click;
  end;
end;
Dadurch wird eine zweite CheckBox zur Laufzeit erstellt. Ins OnClick kommt:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  with Sender as TCheckBox do
  begin
    Font.Color:=clRed;
    Font.Bold:=true;
  end;
end;
Klickt man jetzt auf eine der CheckBoxen, wird dessen Caption Rot und Fett dargestellt. Klappt also wunderbar :gruebel:
Klappt dieses Minibeispiel bei dir auch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Seite 2 von 3     12 3      

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