Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Check-Group und case of... (https://www.delphipraxis.net/43578-check-group-und-case.html)

JSB 6. Apr 2005 08:46


Check-Group und case of...
 
Delphi-Quellcode:
i:= cgfilter;
case i.ItemChecked of
    [0]:
    begin
        qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='
    end;
  • cgfilter= CheckGroup
    qTelefonliste=Query

    Fehler= "[" erwartet aber "of" gefunden

Wie soll ich das am besten Lösen?
Ich möchte eine abfrage machen was ausgewählt wurde ohne tausend mal(oder auch 8 mal) das Gleiche zufragen... :gruebel:

alcaeus 6. Apr 2005 09:15

Re: Check-Group und case of...
 
Zitat:

Zitat von JSB
cgfilter= CheckGroup

:gruebel: CheckGroup? Watn dat? Ich kenn nur die CheckListBox. Du koenntest mit ItemIndex versuchen zu arbeiten, oder ueber eine zusaetzliche Funktion:

Delphi-Quellcode:
procedure TForm1.HandleItems(ix: Integer);
begin
  case ix of
    0: qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON =';
  end;
end;

//...

for i := 0 to i.Items.Count-1 do
  if i.ItemChecked[i] then
    HandleItems(i);
Evtl. solltest du aber mal erklaeren was die CheckGroup sein soll :gruebel:

Greetz
alcaeus

JSB 6. Apr 2005 09:21

Re: Check-Group und case of...
 
Liste der Anhänge anzeigen (Anzahl: 1)
TRzCheckGroup
ist eine Kompi von Raize
und sieht so aus.
Es gibt mir die Möglichkeit "Items" hinzuzufügen und diese über die Komponente direkt auszusprechen. Besonders gut wenn's viele sind...

Sieht so ungf. aus:

Stevie 6. Apr 2005 09:27

Re: Check-Group und case of...
 
Zitat:

Zitat von alcaeus
:gruebel: CheckGroup? Watn dat? Ich kenn nur die CheckListBox. Evtl. solltest du aber mal erklaeren was die CheckGroup sein soll :gruebel:

Guckst du Bei Google suchenTCheckGroup! :cool:

JSB 6. Apr 2005 09:28

Re: Check-Group und case of...
 
Delphi-Quellcode:
[Fehler] fTelefonliste.pas(162): Ordinaltyp erforderlich
:wall: :wall: :wall:

Treffnix 6. Apr 2005 09:44

Re: Check-Group und case of...
 
Wenn du jetzt noch schreiben würdest wie dein Source mittlerweile aussieht....

Auf deinen ersten Post bezogen gehst du aber falsch an die Sache ran. Case ist für eine Bedingung unnötig. und diese prüfst du auch noch falsch.
Zitat:

Delphi-Quellcode:
case i.ItemChecked of
    [0]:
    begin
        qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='
    end;

Itemchecked ist höchstwahrscheinleich ein boolscher Wert. Also True oder False. Kein anderer Wert möglich. Du prüfst aber, ob er [0] ist. :gruebel:

Was du vermutlich machen willst ist

Delphi-Quellcode:
if i.Itemchecked[0] Then
  Begin
    qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='
  End;
evtl. isses auch
Delphi-Quellcode:
if i[0].Itemchecked Then
  Begin
    qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON ='
  End;
Kommt auf den Aufbau dieser Liste an.

JSB 6. Apr 2005 10:21

Re: Check-Group und case of...
 
Das kann ich auch (if....then....)
Soll ich dir den Code dafür zeigen?

Delphi-Quellcode:
  if cgfilter.ItemChecked [0] = true then
      begin
          qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON = ' + '''' + dDatabase.iqLogin.fieldbyname('MitarbeiterID').AsString + '''' + ' and';
      end
    else
      if cgfilter.ItemChecked [1] = true then
        begin
//          qMitarbeiter.SQL.Strings [3] := '''' + dDatabase.iqLogin.fieldbyname('MitarbeiterID').AsString + '''';
          qMitarbeiter.Active := True;
          codesite.SendMsg('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + '     ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString);
        //  ShowMessage ('MitarbeiterID= ' + qMitarbeiter.fieldbyname('ID').AsString);
//          ShowMessage ('Abteilung= ' + qMitarbeiter.fieldbyname('ABTEILUNG').asString + '     ' + 'TAETIGKEITSBEREICH= ' + qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString);
          if (qMitarbeiter.fieldbyname('ABTEILUNG').AsString = '') and (qMitarbeiter.FieldByName('TAETIGKEITSBEREICH').AsString = '') then
            MessageDlg('Der Filter: "Mein Bereich",'+#13+#10+'kann nicht verwendet werden!'+#13+#10+'Bitte prüfen Sie ob die Felder ABTEILUNG '+#13+#10+'und TÄTIGKEITSBEREICH in den Mitarbeiterdaten gefüllt '+#13+#10+'wurden!'+#13+#10+'Wenden Sie sich ggf. an den Administrator!', mtError, [mbOK], 0)
          else
            qTelefonliste.SQL.Strings [3] := 'BEREICH = ' + '''' + qMitarbeiter.fieldbyname('ABTEILUNG').AsString + '''' +  ' or BEREICH =' + '''' + qMitarbeiter.fieldbyname('TAETIGKEITSBEREICH').AsString + '''' + ' and ';
        end
      else
        if cgfilter.ItemChecked [2] = true then
          qtelefonliste.SQL.Strings [4] := 'Datum = ' + '''' + (DateToStr(Date)) + '''' + ' and'
        else
          if cgfilter.ItemChecked [3] = true then
            qtelefonliste.SQL.Strings [5] := 'Prioritat = "1" and'
          else
            if cgfilter.ItemChecked [4] = true then
              qtelefonliste.SQL.Strings [6] := 'Prioritat = "2" and'
            else
              if cgfilter.ItemChecked [5] = true then
                qtelefonliste.SQL.Strings [7] := 'Prioritat = "3" and'
              else
                if cgfilter.ItemChecked [6] = true then
                  qtelefonliste.SQL.Strings [8] := 'Datum > ' + '''' + (DateToStr(IncDay(Date,-sptage.value))) + '''' + ' and'
                else
                  if cgfilter.ItemChecked [7] = true then
                    qtelefonliste.SQL.Strings [9] := 'Erledigt = T and'
                  else
                    if cgfilter.ItemChecked [8] = true then
                      qtelefonliste.SQL.Strings [10] := 'Erledigt = F and';
Ich glaube so progt nur MICROSOFT ...
Unübersichtlich, langsam, kompliziert, nicht nachvollziebar... :wink:

alcaeus 6. Apr 2005 10:41

Re: Check-Group und case of...
 
Zitat:

Zitat von JSB
Ich glaube so progt nur MICROSOFT ...
Unübersichtlich, langsam, kompliziert, nicht nachvollziebar... :wink:

Cool...ich wusste gar nicht dass ich bei Microsoft arbeite.
Wie gesagt, du koenntest auch meine Moeglichkeit mit einer Schleife verwenden.
Allerdings ist deine Sache mit if-elseif IMHO nicht ganz richtig, denn damit erlaubst du nur eine angeklickte Checkbox, und das waere dann ja wieder die TRadioGroup.
Du erlaubst dass ich mich selbst zitiere:
Zitat:

Zitat von alcaeus
Delphi-Quellcode:
procedure TForm1.HandleItems(ix: Integer);
begin
  case ix of
    0: qTelefonliste.SQL.Strings [2] := 'BEZUGSPERSON =';
  end;
end;

//...

for i := 0 to i.Items.Count-1 do
  if i.ItemChecked[i] then
    HandleItems(i);

Probier das mal. Sollte eigentlich funktionieren. Evtl. musst du eben noch das Items.Count ausbessern, ich weiss nicht ob das bei der Komponente anders heisst.

Greetz
alcaeus

Michael_Bayer 6. Apr 2005 10:43

Re: Check-Group und case of...
 
Zitat:

Zitat von JSB
Ich glaube so progt nur MICROSOFT ...
Unübersichtlich, langsam, kompliziert, nicht nachvollziebar... :wink:

Ganz im Gegenteil - der MS-Quellcode ist i.d.R. sehr übersichtlich und umfangreich kommentiert - nagut, den Schnellsten bauen die nicht grad ;)

JSB 6. Apr 2005 11:28

Re: Check-Group und case of...
 
Ich habe nicht gemeint das du bei MICRROSOFT arbeitest!
(Wie könnte/kann man nur darüber glücklich sein? =SCHADE!.?)

Das ist ja das Prob.
Ich möchte mehrere Auswahlen möglich machen. Eine TRadioGroup kann nicht das Richtige sein. Eine CheckList schon....
ABER: WIE!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz