Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 06.10.11 19:42 
Hi Leute!

Ich habe 3 Checkboxen, die aufeinander reagieren sollen. Ich weiß, dass es mit einer RadioGroup viel einfacher zu lösen wäre, aber die wird von AlphaLite nicht geskinnt, aber AlphaLite bringt eigene Checkboxen mit.

Kann mir jemand helfen? Ich habe 3 Boxen. Wenn die eine angeklickt wird, dann soll sie den Haken bekommen und die anderen beiden sollen ihren Haken verlieren. Eigentlich ganz simpel ... das dachte ich zumindest, als ich diesen Code schrieb.

Mein Code sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.ChckboxMainClick(Sender: TObject);
begin
ChckboxMain.State := cbChecked;
ChckboxSide.State := cbUnchecked;
ChckboxFusion.State := cbUnchecked;
end;

procedure TForm1.ChckboxSideClick(Sender: TObject);
begin
ChckboxMain.State := cbUnchecked;
ChckboxSide.State := cbChecked;
ChckboxFusion.State := cbUnchecked;
end;

procedure TForm1.ChckboxFusionClick(Sender: TObject);
begin
ChckboxMain.State := cbUnchecked;
ChckboxSide.State := cbUnchecked;
ChckboxFusion.State := cbChecked;
end;


Ich habe es auch vorher schon anders probiert, also nicht den State abgefragt sondern nach der Eigenschaft "Checked" gefragt. Es hat das gleiche Ergebnis gebracht, nur dass der Stack-Überlauf nicht gleich sofort kam... ;)

Gruß,

Terra

PS: Wenn mir noch jemand kurz erklären kann, was ein Stack-Überlauf ist, dann wäre ich noch zufriedener... ;)

_________________
Hasta La Victoria Siempre
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 06.10.11 19:53 
Ich habe kein Delphi da, rate also einfach mal ins Blaue: Kann es sein, dass das Setzen von Checked ein OnClick-Ereignis auslöst? Damit würden sich die Ereignisse unbestimmt lange gegenseitig aufrufen, was möglichweise in einem StackOverflow enden könnte. ;)

Um es einmal grob zu formulieren: Ein Stack (FILO) ist eine Liste, beispielsweise ein Array, mit fester Länge. Sobald du mehr Daten dort ablegst (zwischenspeicherst) als reinpassen, gibt's einen Überlauf. :)
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Do 06.10.11 20:21 
@Marc: Genau so ist es. :zustimm:

@Terra:
ich würde Checkboxen für so ein Vorhaben ohnehin nicht nutzen. Für diese Funktionalität gibt es ja Radiobuttons.
Die Frage ist nun, ob dein dein AlphaLite normale Radiobuttons (statt RadioGroup) richtig skinnt.

_________________
Delphi: XE - OS: Windows 7 Professional x64
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 06.10.11 22:20 
Fasse alles dreis in eine Routine zusammen und bau das ganze so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.CBClick(Sender: TObject);
var
    CB: TCheckbox;
begin
    CB := TCheckbox(Sender);
    if not Assigned(CB) or (CB.Tag <> 0then Exit;

    CB.Tag := 1;

    ChckboxMain.State := cbUnchecked;
    ChckboxSide.State := cbUnchecked;
    ChckboxFusion.State := cbUnchecked;

    CB.State := cbChecked;

    CB.Tag := 0;
end;

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 07.10.11 08:18 
Mein ehemaliger Dozent für Softwareergonomie stirbt bei so etwas immer ein kleines Bisschen :wink:

_________________
Delphi: XE - OS: Windows 7 Professional x64

Für diesen Beitrag haben gedankt: FinnO
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 08.10.11 07:42 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Die Frage ist nun, ob dein dein AlphaLite normale Radiobuttons (statt RadioGroup) richtig skinnt.
Nur die (kostenpflichtige) Vollversion, nicht die Lite Version.

user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Mein ehemaliger Dozent für Softwareergonomie stirbt bei so etwas immer ein kleines Bisschen :wink:
Geiz ist halt geil...

Ein normales Design ohne Skins wäre sicher besser geeignet als die falschen Komponenten zu verwenden, die dem Benutzer nun einmal eine andere Funktionalität signalisieren... :roll: