ComboBox Item Count abfragen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Cosmo
Beiträge: 25
Registriert: Fr 19. Nov 2010, 14:12

ComboBox Item Count abfragen

Beitrag von Cosmo »

Hi,

ich habe eine ComboBox auf meinem Formular plaziert mit der Eigenschaft "ReadyOnly = True", neben der CB ist ein Button. Der User wählt einen Eintrag aus der CB und klickt dann auf den Button der eine Aktion ausführt. Soweit klappt das alles auch, aber, wie frage ich die ComboBox ab ob überhaupt ein Eintrag ausgewählt wurde?

Wenn zu Beginn kein Eintrag aus der CB gewählt wurde und der User auf den Button klickt, kommt eine Fehlermeldung. Diese Fehlermeldung möchte ich umgehen und stattdessen eine Message anzeigen, die den User darauf hinweisen soll, dass er zuerst einen Eintrag aus der CB wählen muss.

Ich habs mal so probiert:

Code: Alles auswählen

begin
   if cboNamen.Items.Count -1 then
      begin
               Application.MessageBox('Bitte wählen Sie zuerst einen Namen!', 'Name fehlt',
          MB_ICONINFORMATION + MB_OK);
      end
   else
     begin
     // Aktion...
    end;
end;  

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: ComboBox Item Count abfragen

Beitrag von linus »

Über die Eigenschaft cboNamen.ItemIndex kannst Du abfragen, ob überhaupt ein Eintrag ausgewählt wurde, also:

Code: Alles auswählen

if (cboNamen.ItemIndex < 0) then begin
  .. Fehlerbehandlung
  end;
Wer mehr denkt hat mehr vom Hirn...

Cosmo
Beiträge: 25
Registriert: Fr 19. Nov 2010, 14:12

Re: ComboBox Item Count abfragen

Beitrag von Cosmo »

linus hat geschrieben:Über die Eigenschaft cboNamen.ItemIndex kannst Du abfragen, ob überhaupt ein Eintrag ausgewählt wurde, also:

Code: Alles auswählen

if (cboNamen.ItemIndex < 0) then begin
  .. Fehlerbehandlung
  end;
Danke!

Ich bekomme jetzt aber allerdings eine andere Fehlermeldung, die da lautet:
unit1.pas(44,6) Fatal: Syntax error, ";" expected but "ELSE" found
Hier mal mein kompletter Code:

Code: Alles auswählen

procedure TForm1.cmdOpenFileClick(Sender: TObject);
var
  AProcess: TProcess;
begin
     if (cboNamen.ItemIndex < 0) then
           Application.MessageBox('Bitte wählen Sie zuerst einen Namen!', 'Name fehlt',
           MB_ICONINFORMATION + MB_OK);
     else
          AProcess := TProcess.Create(nil);
             case cboNamen.ItemIndex of
                0: begin
               AProcess.CommandLine := 'C:\Hans.txt';
               end;
               1: begin
              AProcess.CommandLine := 'C:\Frank.txt';
              end;
   AProcess.Options := AProcess.Options + [poWaitOnExit];
   AProcess.ShowWindow := swoHIDE;
   AProcess.Execute;
end;
Hast du eine Idee wo der Fehler liegt?

Linkat
Lazarusforum e. V.
Beiträge: 559
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: ComboBox Item Count abfragen

Beitrag von Linkat »

Hallo Cosmo,

Code: Alles auswählen

     if (cboNamen.ItemIndex < 0) then
           Application.MessageBox('Bitte wählen Sie zuerst einen Namen!', 'Name fehlt',
           MB_ICONINFORMATION + MB_OK);     <-- hier darf kein ; sein
     else
 
vor else darf kein Semikolon stehen.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Cosmo
Beiträge: 25
Registriert: Fr 19. Nov 2010, 14:12

Re: ComboBox Item Count abfragen

Beitrag von Cosmo »

Linkat hat geschrieben:Hallo Cosmo,

Code: Alles auswählen

     if (cboNamen.ItemIndex < 0) then
           Application.MessageBox('Bitte wählen Sie zuerst einen Namen!', 'Name fehlt',
           MB_ICONINFORMATION + MB_OK);     <-- hier darf kein ; sein
     else
 
vor else darf kein Semikolon stehen.

Gruß, Linkat
Haha, oh man, da hatte ich mal wieder Tomaten vor den Augen! ^^

Jetzt läuft der Code. :)

Vielen Dank, Linkat!

Antworten