Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Auswahl der Checklistbox
Kurdt67 - Mo 28.02.05 22:26
Titel: Auswahl der Checklistbox
Hi! Mal ne Frage : Ich hab ne Checklistbox und ich will nur AKZEPTIEREN wenn der Benutzer auch ein häkchen macht! nun hab ich gemerkt, das man auch nur die stringzeile anklicken kann (die blaue) ohne das dann das häkchen aktiviert ist, jedoch wird dann auch akzeptiert das diese Zeile ausgewählt ist!! Kann ich das verhindern??? :?:
Und gleich noch ne Frage! Wie angesprochen färbt sich eine Zeile ja so blau, kann ich das ändern, und die z.B. Grau machen? Wenn ja wie? :roll:
DANKE EUCH... :roll:
retnyg - Mo 28.02.05 22:28
wenn du nicht willst dass ein click auf den text deiner checkbox das teil ein/ausschaltet verwende halt ein label für deinen text und die caption der checkbox stellst du auf ''
cartridge - Mo 28.02.05 22:32
Hi!
Ich weiß ja nicht worauf Du geprüft hast. Du musst jedoch auch Checed über eine Schleife prüfen!
Gruß
Ingo
Dominique - Mo 28.02.05 22:46
| retnyg hat folgendes geschrieben: |
| wenn du nicht willst dass ein click auf den text deiner checkbox das teil ein/ausschaltet verwende halt ein label für deinen text und die caption der checkbox stellst du auf '' |
hat er nicht
CHECKLISTBOX geschrieben???
zu frage 1:
| cartridge hat folgendes geschrieben: |
Hi!
Ich weiß ja nicht worauf Du geprüft hast. Du musst jedoch auch Checed über eine Schleife prüfen!
Gruß
Ingo |
zu frage 2:
setze die Eigenschaft "Style" auf "lbOwnerDrawFixed" und Zeichne im OnDrawItem-Ereignis neu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.CheckListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if Control is TCheckListBox then begin TCheckListBox(Control).Canvas.FillRect(Rect); if (odSelected in State) then with TCheckListBox(Control).Canvas do begin Pen.Style := psClear; Brush.Style := bsSolid; Brush.Color := clSilver; FillRect(Rect); Font.Color := clWindow; end else TCheckListBox(Control).Canvas.Font.Color := clMoneyGreen; DrawText(TCheckListBox(Control).Canvas.handle, pChar(TCheckListBox(Control).Items[Index]), Length(TCheckListBox(Control).Items[Index]), Rect, DT_SINGLELINE); end; end; |
mit den Farben und Linienstilen (Brush.Style) kannst du nach belieben herumspielen
Kurdt67 - Mo 28.02.05 22:49
@ cartridge : jo, ich hab mit ner FOR-schleife geprüft, ob checklistbox1.checked[i] true
ist. er akzeptiert das aber auch so...
@ retnyg : das geht nicht mit dem label bei mir, weil ich jetzt das programm schon so geschrieben hab, das er das in die listbox schreibt!!! dann muss ich soviel ändern!!!
retnyg - Mo 28.02.05 23:00
im normalfall führt das clicken auf einen text nicht zu einem check-vorgang
also wenn du auf checked prüfst müsste das auf jeden fall gehen. bedenke aber dass die numerierung der items einer listbox mit 0 beginnt und nicht mit 1 !
also nicht ...checked[i] sondern ...checked[i-1]
Kurdt67 - Mo 28.02.05 23:11
SORRY @ retnyg : ich hatte doch als eigenschaft SELECTED, du hast recht ich hab jetzt checked genommen, jetzt gehts einwandfrei!!
Bloß mit den farben komm ich net klar, ist ganz schön schwer... :oops:
Dominique - Mo 28.02.05 23:15
| Kurdt67 hat folgendes geschrieben: |
| Bloß mit den farben komm ich net klar, ist ganz schön schwer... :oops: |
ist ganz schön Bunt würde ich sagen :lol:
wo hakt es denn? den Source von oben kannst du praktsch 1:1 übernehmen
nur die Style-Property nicht vergessen (lbOwnerDrawFixed")
Kurdt67 - Mo 28.02.05 23:25
ok soll ichs wirklich wagen?? ich probiers mal, also es geht los : :wink:
zu "checkListBox2DrawItem" sagt er undefinierter bezeichner.
meine checklist heißt aber 2!!!!! muss da noch nen punkt zwischen?
dann gehts weiter : undefin. bezeichern "control",
[Fehler] Unit1.pas(225): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(227): Es gibt keine überladene Version von 'Rect', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit1.pas(228): Undefinierter Bezeichner: 'State'
[Fehler] Unit1.pas(234): Es gibt keine überladene Version von 'Rect', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit1.pas(240): Undefinierter Bezeichner: 'Index'
[Fehler] Unit1.pas(241): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] Unit1.pas(40): Ungenügende Forward- oder External-Deklaration: 'TForm1.FormCreate'
Und jetzt schlagt mich bitte net zusammen!!! :wink:
Dominique - Mo 28.02.05 23:30
| Kurdt67 hat folgendes geschrieben: |
ok soll ichs wirklich wagen?? ich probiers mal, also es geht los : :wink:
zu "checkListBox2DrawItem" sagt er undefinierter bezeichner. |
das ist ein ereignis, also im Objektinspektor (vorher deine checklistbox2 markieren!)
auf das register "Ereignisse" und dann einen doppelklick neben "OnDrawItem"
| Kurdt67 hat folgendes geschrieben: |
meine checklist heißt aber 2!!!!! muss da noch nen punkt zwischen?
dann gehts weiter : undefin. bezeichern "control",
[Fehler] Unit1.pas(225): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(227): Es gibt keine überladene Version von 'Rect', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit1.pas(228): Undefinierter Bezeichner: 'State'
[Fehler] Unit1.pas(234): Es gibt keine überladene Version von 'Rect', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit1.pas(240): Undefinierter Bezeichner: 'Index'
[Fehler] Unit1.pas(241): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] Unit1.pas(40): Ungenügende Forward- oder External-Deklaration: 'TForm1.FormCreate'
Und jetzt schlagt mich bitte net zusammen!!! :wink: |
der rest sind folgefehler, ausser, dass du die deklaration von FormCreate wohl mal von hand gelöscht hast
Kurdt67 - Mo 28.02.05 23:38
uppps, stimmt ja...
ok jetzt geht es wunderbar :D
DANKE AN Dominique!!!!!!
Dominique - Mo 28.02.05 23:43
| Kurdt67 hat folgendes geschrieben: |
uppps, stimmt ja...
ok jetzt geht es wunderbar :D
DANKE AN Dominique!!!!!! |
:oops: ähmmm, schon ok... hoffentlich springen dir meine farben nicht zu sehr in's auge
Kurdt67 - Mo 28.02.05 23:48
ne die farben fetzen schon :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!