![]() |
CheckGrp - ComboBox - Item Problem
Hi,
hab wieder nen Hänger. Kann mir jmd sagen warum der Button1 nicht Enabled wird, wenn ich mind. eine Checkbox.Checked=true habe? (ComboBox und CheckGrp mit 4 CheckBoxen drinne)
Delphi-Quellcode:
Dazu wäre noch zu sagen, das ich ähnlich noch eine Abfrage auf Seiten der CheckGrp schreiben will. Also das mind. eine CheckBox.Checked=true und gleichzeitig ein ComboBox.Item<>''. Das bekomm ich nat. selbst hin wenn der Fehler oben gefunden wird.
procedure TForm1.FormCreate(Sender: TObject);
begin Form1.Button1.Enabled:=False; end; procedure TForm1.ComboBox1DropDown(Sender: TObject); var i:integer; hilf:boolean; begin hilf:=false; for i:=1 to Form1.CheckGroup1.Items.Count do if Form1.CheckGroup1.Checked[i]:=true; then hilf:=true; if hilf=true then Form1.Button1.Enabled:=true; end; lg Steve |
Re: CheckGrp - ComboBox - Item Problem
Zitat:
Delphi-Quellcode:
Wobei mein Delphi(5) hier keine Checkgroup kennt :|
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var i:integer; hilf:boolean; begin hilf:=false; for i:= 0 to CheckGroup1.Items.Count - 1 do if CheckGroup1.Checked[i] then hilf:=true; if hilf then Button1.Enabled:=true; end; |
Re: CheckGrp - ComboBox - Item Problem
mmh, also so klappts auch nicht. ich arbeite mit lazarus. hatte noch 2 syntaktische fehler drin beim kopierten text...allerdings sind die nicht ausschlaggebend.
Delphi-Quellcode:
nun bekomme ich ne exception, die bei lazarus nich näche spezifiziert wird...ganz toll. ich muss mir turbo delphi besorgen, das wird sonst nix.
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var i:integer; hilf:boolean; begin hilf:=false; for i:=0 to 3 do //hab auch 1..4 probiert :s if Form1.CheckGroup1.Checked[i]=true then hilf:=true; if hilf=true then Form1.Button1.Enabled:=true; end; an sich von der überlegung her müsst es doch klappen oder? |
Re: CheckGrp - ComboBox - Item Problem
Wie gesagt, Checkgroup sagt mir gerade nichts. Ich kann höchstens heute Abend mal unter Linux nachschauen, da hab ich auch Lazarus. Ansonsten solltest Du Dir aber schnell wieder abgewöhnen, auf true abzufragen sowie Instanznamen zu verwenden (Form1.Checkgroup1 besser in Checkgroup1 ändern, es ist ja eine Methode von TForm1).
|
Re: CheckGrp - ComboBox - Item Problem
alles klar, bin ja noch anfänger :)
so wie ich das sehe, werden in einer CheckGroup Checkboxen zusammengefasst. Also Wie bei einer RadioGroup RadioButtons zusammengefasst werden. Naja ich probier weiter. |
Re: CheckGrp - ComboBox - Item Problem
Vielleicht geht es mit
Delphi-Quellcode:
aber ich kann jetzt nur raten ohne diese Kompo zu kennen.
CheckGroup1.Items[i].Checked
|
Re: CheckGrp - ComboBox - Item Problem
funtioniert auch nicht. leider. gibt es denn eine gängige methode um eine beliebige anzahl von checkboxen abzufragen, ob sie checked sind oder nicht? CheckBox[i] geht ja auch nicht. vll über umwege, aber es soll ja weniger werden, nicht mehr.
ahja, lazarus wirft die exception immer bei dem ereignis und zeigt dann folgende zeilen an
Delphi-Quellcode:
Habs mal mit nem anderen Ereignis versucht (OnChange), was auch für die problemlösung sinniger ist. Bringt mir aber auch keine Punkte.
function TCustomCheckGroup.GetChecked(Index: integer): boolean;
begin if (Index < -1) or (Index >= FItems.Count) then [b]raise Exception.CreateFmt(rsIndexOutOfBounds,[ClassName,Index,FItems.Count]);[/b] Result:=TCheckBox(FButtonList[Index]).Checked; end; |
Re: CheckGrp - ComboBox - Item Problem
Nehmen wir nochmal meinen Code aus #2 und erweitern ihn ein klein wenig:
Delphi-Quellcode:
Was kommt dabei heraus?
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var i:integer; hilf:boolean; begin hilf:=false; if CheckGroup1.Items.Count < 1 then ShowMessage('Es gibt keine Items') else for i:= 0 to CheckGroup1.Items.Count - 1 do if CheckGroup1.Checked[i] then hilf:=true; if hilf then Button1.Enabled:=true; end; |
Re: CheckGrp - ComboBox - Item Problem
Es gibt keine Items. Kalppt auch nicht. Habs noch mit "CheckGroup1.CheckEnabled[i]=true" versucht.
Es gibt einfach nichts sinniges hier: CheckGroup1.XXX. ich finds jedefalls nicht. daran liegts wohl :( |
Re: CheckGrp - ComboBox - Item Problem
Kannst Du mal einen Screenshot posten?
[edit] Anscheinend haben die Checkboxen den falschen Parent (TForm statt TCheckgroup). Versuch mal, die Checkboxen zu markieren (SHIFT - Linke Maustaste), auszuschneiden, dann die Checkgroup zu markieren und die Checkboxen einzufügen. Dann sollte der Parent stimmen. [/edit] |
Re: CheckGrp - ComboBox - Item Problem
Ich kenne TCheckGroup auch nicht, aber mal ins blaue geraten...
Delphi-Quellcode:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var i:integer; hilf:boolean; begin hilf:=false; if CheckGroup1.Count < 1 then //oder CheckGroup1.ItemCount < 1 ..du musst mal nach den möglichen Eigenschaften gucken, so etwas ähnliches wird es schon geben ShowMessage('Es gibt keine Items') else for i:= 0 to CheckGroup1.Count - 1 do begin if CheckGroup1.Checked[i] then begin hilf:=true; Break; end; end; Button1.Enabled := hilf; end; |
Re: CheckGrp - ComboBox - Item Problem
ich kann kein bild hochladen (man kann nur urls angeben...).
Es liegt muss an der refenzierung liegen. der count-befehl und der ...checked-befehl geht auch nicht. was nützt mir dann diese checkgroup? Wie wird denn das bei radiogroups gehandhabt? guck ich direkt mal nach... |
Re: CheckGrp - ComboBox - Item Problem
Hast Du mein
![]() |
Re: CheckGrp - ComboBox - Item Problem
Liste der Anhänge anzeigen (Anzahl: 1)
ach lol, hab oben in den leisten versucht das bild anzuhängen sorry :)
habe die checkboxen schon in die gruppe eingefügt. allerdings haben die nich TCheckGroup als Parent, sondern TCheckBox. Vll fällt dir ja noch was ein zum bild. |
Re: CheckGrp - ComboBox - Item Problem
Obwohl mich das Thema jetzt interessiert, kommen wir ohne Lazarus auf keinen grünen Zweig. Mach es doch einfach so:
Delphi-Quellcode:
Das sollte funktionieren.
Button1.Enabled := Checkbox1.Checked or Checkbox2.Checked or Checkbox3.Checked or Checkbox4.Checked;
|
Re: CheckGrp - ComboBox - Item Problem
ja so wollte ich es am fang machen. blos weiß ich jetzt noch nicht wieviele checkboxen es am ende sind. bekomme die genau spezifizierung der aufgabe erst nächste woche. blos ich weiss halt worum es geht und wollte shconmal vorher nen bisl was tun :)
es muss ja auf diesem allgemeinen weg irgendwie funktionieren (mit count und nem laufenden index). hätte nicht gedacht das ich schon an solchen lapalien scheitern würde. |
Re: CheckGrp - ComboBox - Item Problem
Ist denn Lazarus vorgegeben? Ansonsten würde ich Dir zu TDE raten, aber das hast Du ja selbst bereits in Erwägung gezogen.
|
Re: CheckGrp - ComboBox - Item Problem
kennst du dich aus mit den lizenvereinbarungen bei TDE?
hab nur vorhin gesehen das man company angeben muss. ich wollts mir nachher eh laden, nur würde ich es ja nicht nur zum privatgebrauch nutzen. die anwendung wird ja dann im unternehmen gefahren. da würde es schwierigkeiten geben oder? vll doch den projektleiter um ne delphi 7 lizenz bitten :) |
Re: CheckGrp - ComboBox - Item Problem
Soll es kommerziell im Unternehmen eingesetzt werden, ist TDE wirklich nicht die richtige Wahl.
|
Re: CheckGrp - ComboBox - Item Problem
So, ich habe mir gerade die Checkgroup unter Lazarus angesehen. Die funktioniert wie gewünscht, wenn Du NICHT Checkboxen aus der Komponentenpalette daraufziehst, sondern indem Du der Eigenschaft Items Werte (Strings) zuweist.
|
Re: CheckGrp - ComboBox - Item Problem
na das muss man erstmal wissen :) vielen dank. funktioniert jetzt auch einwandfrei.
Delphi-Quellcode:
Jetzt muss ich mich nur noch um die Checkboxen"steuerung" kümmern :)
procedure TForm1.ComboBox1Change(Sender: TObject);
var i:integer; hilf:boolean; begin Button1.Enabled:=false; hilf:=false; for i:= 0 to CheckGroup1.Items.Count-1 do if CheckGroup1.Checked[i] then hilf:=true; if hilf then Button1.Enabled:=true; end; |
Re: CheckGrp - ComboBox - Item Problem
Geht auch noch etwas kürzer:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var i:integer; begin for i:= 0 to CheckGroup1.Items.Count-1 do begin Button1.Enabled := CheckGroup1.Checked[i]; if Button1.Enabled then break; end; end; |
Re: CheckGrp - ComboBox - Item Problem
okay, aber das Button1.Enabled:=false als Startwert muss drin bleiben, weil sonst trotzdem der Button geklickt werden könnte wenn:
eine checkbox egwählt wurde, dann wieder abgewählt wird und dann die combobox nochmal angewählt wird... dann ist der startbutton immernoch an :) und das soll ja so nicht sein. Mal ne andere Frage noch. Ich habe TDE installiert. Nun will er ne Registrierung durchführen. Irgendwas war da doch mit den Pfaden, das man irgend einen Pfad ändern musste oder ne Datei woanders hinpacken muss, damit man die Registrierung nicht machen muss. Hab das gestern irgendwo gelesen, aber finds nicht mehr :( |
Re: CheckGrp - ComboBox - Item Problem
Solche "üblen Tricks" kenne ich jetzt nicht. Registrier Dich doch einfach kostenlos, dann bekommst Du eine Mail, deren Anhang Du in Dein HOME-Verzeichnis speicherst. Das war dann alles.
|
Re: CheckGrp - ComboBox - Item Problem
jop, danke. hat alles geklappt. :)
|
Re: CheckGrp - ComboBox - Item Problem
CheckGroup unter Lazarus 0.9.25 hat gar kein Count.
Delphi-Quellcode:
Funktioniert bei mir super.
procedure TForm1.CheckGroup1ItemClick(Sender: TObject; Index: integer);
var i:integer; hilf:boolean; begin hilf:=false; for i:= 0 to CheckGroup1.Items.Count - 1 do begin if CheckGroup1.Checked[i] then begin hilf:=true; Break; end; end; Button1.Enabled := hilf; end; ups, hab wohl die 2. Seite übersehn :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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