Announcement

Collapse
No announcement yet.

Problem mit TListView

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit TListView

    Hallo Delphianer,<br>
    bei meinem Programm soll der Anwender nur ein Ereignis (z.B. ein Button-Click) auslösen können, wenn zuvor in meinem TListView ein Eintrag makiert wurde. Dies ist notwendig, da mit den betreffenen Daten (einer bestimmten Zeile) gearbeitet werden soll.<br>
    <br>
    Wer kann mir helfen?
    Danke für jede Hilfe!

  • #2
    Hallo Alex,

    Setze z.B.: Button1.enabled := false;

    Im Event OnClick des ListView-Controls schreibe dann:

    Button1.enabled := true;

    Viel Erfolg..

    Comment


    • #3
      Danke für die Antwort,<br>
      ich habe aber schon eine andere Lösung gefunden:<br>
      if listview1.selected <> nil then begin...end;<br>
      Dies führe ich im Button aus

      Comment


      • #4
        Hallo zusammen,

        die Kombination aus beiden Lösungen ist wahrscheinlich das Beste, da sie dem Anwender auch optisch vor Augen führt, das er auf den Button jetzt nicht klicken kann. Ein Klick ohne Reaktion führt immer zur Verwirrung
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          <p>Hallo Alex,<br>
          <br>
          die ListView kennt das Ereignis <b>OnSelectItem</b>.<br>
          <pre>
          procedure TForm1.ListView1SelectItem(Sender: TObject;
          Item: TListItem; Selected: Boolean);
          begin
          Button1.Enabled:=Selected;
          end;
          </pre>
          Mit diesem Verfahren weiss der Anwender sofort, ob er auf den Button drücken kann oder nicht;-)<br>
          <br>
          Gruß Thomas</p&gt

          Comment


          • #6
            <b>
            Hallo Thomas,<br>
            erstmal Danke, doch nur mit dem Ereignis OnSelectItem geht es leider nicht. Ich kann dann zwar erst auf meinen Button klicken, wenn ich zuvor einen Eintrag ausgewählt habe, doch wenn man dann irgendwo anders hinklickt und damit den Eintrag deselektiert, dann ist mein Button immer noch enabled, doch beim Klick stürzt das Programm ab.
            Deshalb habe in das OnKlick-Ereignis des Buttons folgende Abfrage eingebaut:<br>
            <br>
            if listview1.selected <> nil then<br>
            begin...end<br>
            else ShowMessage('Sie müssen erst einen Eintrag auswählen');<br>
            <br>
            Eigentlich finde ich deine Weise auch besser, doch wie kann ich Enabled:=false setzen, wenn wieder nichts makiert ist?</b&gt

            Comment


            • #7
              <p>Hallo Alex,<br>
              <br>
              ich kann Dein Problem leider nicht nachvollziehen. Ich benutze selber die unter #4 gepostete Lösung und habe keinerlei Probleme damit?!<br>
              <br>
              Eventuell hilft bei Dir folgendes:<br>
              <pre>
              procedure TForm1.ListView1SelectItem(Sender: TObject;
              Item: TListItem; Selected: Boolean);
              begin
              Button1.Enabled:=(Item<>nil) and Selected;
              end;
              </pre>
              Gruß Thomas</p&gt

              Comment


              • #8
                Hallo Thomas,<br>
                vielen Dank, es hat mir sehr geholfen, die Lösung unter #6 war was ich gesucht habe. Nur mit dem Code von #4 ging es nicht. Jetzt läuft es. <br>
                <br>
                Gruß Ale

                Comment

                Working...
                X