Autor Beitrag
Nemesis II
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 49



BeitragVerfasst: Di 10.01.06 21:42 
Hallo alle Zusammen!

Ich wusste nicht wie ich die Frage kurz stellen sollte, auf jeden Fall möchte ich in meiner Anwendung einen TRadioButton erst dann sichtbar machen, wenn vier andere RadioButtons nach beliebiger Reihenfolge gedrückt wurden, solange diese vier nur einmal aktiviert waren, soll der fünfte RadioButton sichbar werden.

Kann mir jemand ansatzweise etwas geben, womit ich rumexperementieren könnte, sonst ist ja der ganze Spaß an Delphi dahin.

Gruß Eugen


Zuletzt bearbeitet von Nemesis II am Fr 13.01.06 23:46, insgesamt 1-mal bearbeitet
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 10.01.06 21:45 
Du zählst für jeden Radiobutton, wie oft er aktiviert wurde. Dazu eignet sich z.b. die RadioButton.Tag - Eigenschaft. Wenn alle 4 Radiobuttons einmal angeklickt wurden, dann kann der 5. sichtbar werden. Dazu reicht ein einziges Event!

_________________
Na denn, dann. Bis dann, denn.
Nemesis II Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 49



BeitragVerfasst: Di 10.01.06 21:50 
Hey danke, ich werds mal probieren, hört sich ja gar nicht so schwer an, man muss halt nur wissen was die ganzen Befehle bedeuten, und das ist das Problem bei allen Anfängern.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 10.01.06 21:54 
Du wollstest ja nur einen Tipp... :wink: Frag einfach.

Aber Dein Ansatz, alles alleine zu probieren, ist sehr gut und die einzige Möglichkeit, wirklich was zu lernen! Super! Weiter so!

_________________
Na denn, dann. Bis dann, denn.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 10.01.06 21:56 
Hi!

Könntest Du Deinem Thread einen Titel gebene, der etwas übers Thema aussagt? Danke! :-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nemesis II Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 49



BeitragVerfasst: Fr 13.01.06 23:34 
Hallo,

also ich hab jetzt eine Lösung gefunden, bin mir nicht sicher ob das die einfachste/kürzeste ist, auf jeden Fall habe ich erst globale Variablen angelegt:

ausblenden Delphi-Quelltext
1:
2:
3:
var
  Form1: TForm1;
  Tag1, Tag2, Tag3, Tag4 : Integer;


dann wurde jeder Klick auf die RadioButtons gezählt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Inc(Tag1);
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Inc(Tag2);
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Inc(Tag3);
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
Inc(Tag4);
end;

jetzt wusste ich nicht mehr welche Procedure diese Klicks aktualisieren könnte, zuerst dachte ich an TForm1.Create, aber das passiert als allererstes, drum geht nicht, dann ist mir die Procedure: "TForm1.FormMouseMove" eingefallen, gedacht getan:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Tag1 and Tag2 and Tag3 and Tag4 >=1 then RadioButton5.Enabled := true; 
end;


:idea: und siehe da es hat funktioniert! :D

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 15.01.06 19:59 
Super! Ich hätte es fast genauso gemacht. Jede Komponente hat ja eine Eigenschaft 'Tag'. Weiterhin ist gut zu wissen, das bei einem Click-Event das Teil, das angeklickt wurde, als Sender übergeben wird.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  TRadioButton (Sender).Tag := TRadioButton (Sender).Tag + 1; // Inc klappt bei Eigenschaften nicht.
  RadioButton5.enabled := (RadioButton1.Tag>=1) and (RadioButton2.Tag>=1) and (RadioButton3.Tag>=1) and (RadioButton4.Tag>=1);
end;

Dieses Event weisst Du jedem Radiobutton zu.

In deinem Code ist ein kleiner Fehler;
ausblenden Delphi-Quelltext
1:
if Tag1 and Tag2 and Tag3 and Tag4 >=1 then RadioButton5.Enabled := true;					

Das ist nett gedacht, aber falsch implementiert.
ausblenden Delphi-Quelltext
1:
Tag1 and Tag2 and Tag3 and Tag4					

verknüpft die Werte von Tag1..Tag4 bitweise per AND. Wenn Tag1..Tag4 jeweils =1 , dann stimmt das sogar zufällig. Wenn jedoch ein Wert 2 ist (oder gerade), dann nicht mehr, denn dann wird '10 AND 01' gerechnet, und das ergibt '00'!
Du musst jeden Wert einzeln auf '>=1' prüfen:
ausblenden Delphi-Quelltext
1:
if (Tag1>=1) and (Tag2>=1) and (Tag3>=1) and (Tag4>=1) then RadioButton5.Enabled := true;					

_________________
Na denn, dann. Bis dann, denn.
Nemesis II Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 49



BeitragVerfasst: So 12.02.06 19:41 
Hey das stimmt sogar, ist mir dann auch später aufgefallen, dass wenn ich die RadioButtons in anderer Reihenfolge mal öfters drücke, trotzdem der andere nicht mehr aktiv wird.

Danke für die Hilfe