![]() |
Checkbox auf Komponente funktioniert nicht
Hallo DP'Ler
ich habe folgendes Problem bei meiner Komponente. Die Komponente kapselt ein TObject und ich habe auf meiner Komponente eine Checkbox, die bei einer Angabe im Setter diese Checkbox Enabled wieder auf true setzen soll und genau das funktioniert nicht, und ich weis nicht warum? ich habe deshalb die ganze Komponente auf Enabled=false gesetzt. Kann mir da jemand weiterhelfen?
Delphi-Quellcode:
Gruß Dieter
procedure TBoardEdit.SetBoard(const value: TBoardClass);
begin if FBoard=value then exit; FBoard:=Value; Enabled :=false; // Ganze Komponente sperren if Assigned(FBoard) then begin Enabled :=true; // Ganze Komponente freigeben // FBoardCheckBox.Enabled:=True; Warum funk das nicht ??? Caption:=IntToStr(FBoard.BoardNr); end; repaint; end; |
Re: Checkbox auf Komponente funktioniert nicht
Hi,
hast du schonmal geguckt ob der Code bis dahin überhaupt ausgeführt wird? Und was genau ist FBoardCheckBox bzw. wie ist das aufgebaut? Gruß Stormy |
Re: Checkbox auf Komponente funktioniert nicht
hallo Stormy,
klar wird der Code ausgeführt. FBoardCheckBox ist die Checkbox, welche in beim Erstellen, das Property Enabled auf False gesetzt wird, um dann im Setter wieder auf True gesetzt werden soll sobald eine Instanz von TBoardclass existiert. Und dieses umschalten funktioniert nicht und ich kann mir nicht erklären warum. Dieter |
Re: Checkbox auf Komponente funktioniert nicht
Hallo,
ich würde statt 1. TObject TComponent und 2. statt Repaint Invalidate benutzen Ausserdem muss die Komponente enabled sein, wenn FBoardCheckBox.Enabled aufgerufen wird. Vielleicht hast du beim ganzen Rumprobieren das Enabled:= False der Komponente noch dringehabt ? Wie hast du denn FBoardCheckBox erzeugt ? Wann genau rufst du das TBoardEdit.SetBoard auf ? Im FormCreate ? Heiko |
Re: Checkbox auf Komponente funktioniert nicht
Hallo Heiko, ich habe dir mal die wichtigsten Proceduren, wo was passiert, rauskopiert. der Setter wird vom Formular im FormCreate aus aufgerufen nachdem das Objekt Createt wurde.
Delphi-Quellcode:
Dieter
constructor TBoardEdit.Create(AOwner: TComponent);
begin inherited Create(AOwner); FBoardCheckBox:=TCheckBox.Create(nil); //..... Enabled:=false; end; //=== destructor TBoardEdit.Destroy; begin FBoardCheckBox.Free; inherited Destroy; end; procedure TBoardEdit.CreateWnd; begin inherited; FBoardCheckBox.Parent:=Self; if csDesigning in ComponentState then FBoardCheckBox.Enabled:=false; FBoardCheckBox.Name:=Name+'_TCheckBox1'; FBoardCheckBox.Checked:=True; FBoardCheckBox.Enabled:=false end; |
Re: Checkbox auf Komponente funktioniert nicht
Hallo,
Zitat:
Warum benutzt du CreateWnd ? Hast du mal einen BreakPoint auf CreateWnd und das FormCreate gesetzt ? Ich denke FormCreate ist früher dran. Statt CreateWnd würde ich Loaded nehmen (ist virtual also override). Aussderm würde ich das Setter im FormActivate aufrufen. Heiko |
Re: Checkbox auf Komponente funktioniert nicht
Hallo heiko,
das mit Formcreate ist schon ok, die Komponente funktioniert ja, nur das Enabled von dieser Checkbox will einfach nicht! Ich vermute jetzt dass (wie du es schon geschrieben hast) das mit denm Ablauf zu tun hat, wann ich die Kompo Enabled setze und wieder freigebe, werde dich informieren sobald ich das durchgetestet habe. Zitat:
Gruß Dieter |
Re: Checkbox auf Komponente funktioniert nicht
Hallo,
Zitat:
Invalidate löscht auch den Hintergrund. Man könnte sogar InvalidateRect nehmen, müsste im OnPaint das aber dann auch testen. Zitat:
Zitat:
Erzeuge die Komponente mal dynamisch (per Button-Klick), dann kannst du auch Breakpoints setzen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr. |
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