AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Checkbox mit erweiteren Eigenschaften gesucht

Ein Thema von hkoestner · begonnen am 27. Apr 2006 · letzter Beitrag vom 28. Apr 2006
 
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#3

Re: Checkbox mit erweiteren Eigenschaften gesucht

  Alt 28. Apr 2006, 08:26
Hi
Zuerst, ich bin neu hier, also, haut mich, wenn ich gegen unbekannte Regeln verstoße.. aber haut mich nicht um.
So, nun kommt auch gleich eine Antwort.
Robert, deine ist nicht hilfreich. Wenn ich ein Problem habe, zu dem es keine fertigen Elemente gibt, muß ich einen Weg finden, dieses Problem zu lösen. Das nenn ich programmieren. Ich hoffe, dir nicht auf den Fuß getreten zu haben, klar, dass man die Lösung zuerst mit den gegebenen Elementen versucht, aber oft genug geht's eben nicht und da ist Hilfe erbeten, wenn man's nich selber hinkriegt.
Außerdem gibt es hier viele Leser, die den ein oder anderen Lösungsansatz auch brauchen und deshalb ist meine Antwort auch etwas ausführlich.

Also, ich würd folgende Lösung vorschlagen:
Da ich nicht weiß (du vielleicht auch nicht ) wieviel Checkboxen da nun in deiner Form verteilt sind, muß ich einen Parameter haben, der etwas über den Namen der Checkbox weiß und ob er zu einer Gruppe gehört. Auf Anhieb fällt mir da erst mal ein String ein, der nun variabel lang sein kann. Eintragen kann ich alles mögliche und so ergibt sich doch eine ausreichende Beschreibung der Checkboxen. Wie, ganz einfach:
Dem Zeichen an der xten Stelle gebe ich eine Beziehung zur Checkbox. Kompliziert? Wenn man’s verstanden hat nicht.
Sagen wir, der String hat folgenden Inhalt: Cb_Para:=‚0012213311TT00TZZZT2‘
Dieser String kann 20 Checkboxen in Gruppen fassen. Definieren wir Gruppe „0“ als unabhängig und die anderen als abhängig.
Kommen wir zur Namensverteilung der Checkboxen. Damit wir indiziert auf diese zugreifen können, sollten sie im Namen irgendwo leicht erkenbar eine Zahl haben z. B. ...Name:=‘Checkbox_1‘ und diese Zahl muß zu einer Zeichenposition im String passen.
Warum nun einen Unterstrich? Nun, über die Zuweisung xPos:=Pos(‚_‘,Name) und anschließendem Index:=Copy(Name,xPos+1,Length(Name)-xPos) bekomme ich den Zeiger auf das Zeichen im String.
Und so kann dann die gemeinsame onClick Methode aussehen:
Delphi-Quellcode:
Lokale Variable:    i   : Integer;
      XPos   :Integer;
      RefName: String:
      RefIndex: Integer;
      RefPara
Begin
   If Checked then                  {nur ausführen, wenn gesetzt}
begin
     XPos:=Pos(‚_‘,Name)
     RefName:=Copy(Name,1,xPos);            {Name des Senders ohne Zahlenanteil)
     RefIndex:=StrToInt(Copy(Name,xPos+1,Length(Name)-xPos));   {eigenen Parameter holen}

     If cb_Para[RefIndex]<>‘0‘then
  Begin                     {Checkbox gehört einer Gruppe an }
    For i:=1 to Length(cb_Para) do
    Begin
       If i<> RefIndex do             { den soeben betätigten ausschließen}
      Begin
         If TCheckbox(FindComponent(Refname+InttoStr(i))).Checked then    
        Begin
TCheckbox(FindComponent(Refname+InttoStr(i))).onClick:=nil ;{Ereignisroutine abschalten}
TCheckbox(FindComponent(Refname+InttoStr(i))).Checke:=False;{sonst wird’s spassig}
TCheckbox(FindComponent(Refname+InttoStr(i))).onClick:=onclick Methode{wieder aktiv }
             End;
          End;
       End
   End;
End;
Das müßte funktionieren, kann es selber zur Zeit nicht testen.
Wenn es um verschiedene Größen geht, dann bastel doch über TPanel- Objekte ein Button in beliebiger Größe und nimm statt Checked Eigenschaft eine Farbe. Grün und Rot z. B.
Aufbau ist ähnlich.
Sinn diese Übung ist eigentlich die Flexibilität zur Laufzeit. Und selbst wenn Checkboxobjekte zur Laufzeit generiert werden, ist diese Routine leicht anzupassen.
Daher meine obige Bemerkung, das du vielleicht selber die Anzahl der Checkboxen nicht kennst. So, nun viel Spaß damit, vielleicht hat‘ s gehelft.....

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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