Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CheckGrp - ComboBox - Item Problem (https://www.delphipraxis.net/118275-checkgrp-combobox-item-problem.html)

LuCSteR 4. Aug 2008 12:55


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:
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;
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.

lg Steve

DeddyH 4. Aug 2008 13:01

Re: CheckGrp - ComboBox - Item Problem
 
Zitat:

Delphi-Quellcode:
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;

-->
Delphi-Quellcode:
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;
Wobei mein Delphi(5) hier keine Checkgroup kennt :|

LuCSteR 4. Aug 2008 13:16

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:
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;
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.
an sich von der überlegung her müsst es doch klappen oder?

DeddyH 4. Aug 2008 13:21

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).

LuCSteR 4. Aug 2008 13:32

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.

DeddyH 4. Aug 2008 13:36

Re: CheckGrp - ComboBox - Item Problem
 
Vielleicht geht es mit
Delphi-Quellcode:
CheckGroup1.Items[i].Checked
aber ich kann jetzt nur raten ohne diese Kompo zu kennen.

LuCSteR 4. Aug 2008 13:45

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:
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;
Habs mal mit nem anderen Ereignis versucht (OnChange), was auch für die problemlösung sinniger ist. Bringt mir aber auch keine Punkte.

DeddyH 4. Aug 2008 13:51

Re: CheckGrp - ComboBox - Item Problem
 
Nehmen wir nochmal meinen Code aus #2 und erweitern ihn ein klein wenig:
Delphi-Quellcode:
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;
Was kommt dabei heraus?

LuCSteR 4. Aug 2008 14:03

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 :(

DeddyH 4. Aug 2008 14:05

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]

Tyrael Y. 4. Aug 2008 14:18

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;

LuCSteR 4. Aug 2008 14:26

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...

DeddyH 4. Aug 2008 14:28

Re: CheckGrp - ComboBox - Item Problem
 
Hast Du mein Edit gelesen? Und man kann sehr wohl Grafiken anhängen (unter "Attachment hinzufügen").

LuCSteR 4. Aug 2008 14:37

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.

DeddyH 4. Aug 2008 14:40

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:
Button1.Enabled := Checkbox1.Checked or Checkbox2.Checked or Checkbox3.Checked or Checkbox4.Checked;
Das sollte funktionieren.

LuCSteR 4. Aug 2008 14:51

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.

DeddyH 4. Aug 2008 14:54

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.

LuCSteR 4. Aug 2008 14:58

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 :)

DeddyH 4. Aug 2008 15:01

Re: CheckGrp - ComboBox - Item Problem
 
Soll es kommerziell im Unternehmen eingesetzt werden, ist TDE wirklich nicht die richtige Wahl.

DeddyH 4. Aug 2008 16:36

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.

LuCSteR 5. Aug 2008 09:21

Re: CheckGrp - ComboBox - Item Problem
 
na das muss man erstmal wissen :) vielen dank. funktioniert jetzt auch einwandfrei.

Delphi-Quellcode:
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;
Jetzt muss ich mich nur noch um die Checkboxen"steuerung" kümmern :)

DeddyH 5. Aug 2008 09:26

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;

LuCSteR 5. Aug 2008 10:11

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 :(

DeddyH 5. Aug 2008 10:23

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.

LuCSteR 5. Aug 2008 10:56

Re: CheckGrp - ComboBox - Item Problem
 
jop, danke. hat alles geklappt. :)

christian_u 5. Aug 2008 11:57

Re: CheckGrp - ComboBox - Item Problem
 
CheckGroup unter Lazarus 0.9.25 hat gar kein Count.

Delphi-Quellcode:
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;
Funktioniert bei mir super.

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