Einzelnen Beitrag anzeigen

Johnny Bravo

Registriert seit: 7. Jun 2008
75 Beiträge
 
#1

ListBox und Message Box Problem

  Alt 7. Jun 2008, 10:37
Hi,
ich bin neu hier bei euch im forum, und hab direkt mehrere Fragen an die Gurus hier:

Ich habe eine anwendung geschrieben, in der sich durch drücken eines buttons, der TOpenDialog öffnet, wo dann der Pfad der ausgewählten Datei in eine ListBox geladen wird:


Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);

begin
                  begin
  
  openDialog := TOpenDialog.Create(self);

  
  openDialog.InitialDir := GetCurrentDir;

  
  openDialog.Options := [ofFileMustExist];

  
  openDialog.Filter :=
    'Ausführbare Dateien|*.exe;*.com;*.bat|Batchdateien|*.bat';

  
  openDialog.FilterIndex := 1;

  if openDialog.Execute // Öffnet den Open Dialog
    then MessageDlg('Datei :'+openDialog.FileName, mtInformation, [mbOk], 0);

         ListBox1.MultiSelect :=False;
         ListBox1.Items.Add (openDialog.FileName); //Fügt die aktuelle Auswahl des Programmes der ListBox hinzu.
         ListBox1.Sorted :=True; //ListBox1.Items.AddStrings(TStrings);
     
  openDialog.Free;
end;
Frage 1:
Wie kann ich einen einzelnen Wert aus der ListBox dann per Shellexecute starten?
Folgender Code funktioniert nur wenn ich einen physikalischen pfad zu einem programm angebe.

Delphi-Quellcode:
var
  Err: Integer;
begin
  Err:= ShellExecute(0,
               Nil,
               PChar('hier sollte der eintrag aus der listbox stehen'),
               Pchar('-Parameter'),
               Pchar('C:\StartDir'),
               SW_NORMAL);
               if Err <= 32 then
    Showmessage(ShellExecuteErrMessage(Err));
end;
Frage 2: Wenn man einen Button drückt, wird der ausgewählte eintrag der Listbox gelöscht, vorher aber noch durch ein Messag Dialog abgefragt.
Wenn man auf Ok drückt, wird der Eintrag entfernt, doch auch auf Abbrechen wird der gelöscht.
caNone funktioniert hier leider nicht, ich bekomme eine fehlermeldung das TBasic Action und TCloseAction inkompatiblen typen wären.
wenn ich den Befehl aber beim TForm.Close anwende funktioniert er jedoch.

Delphi-Quellcode:
procedure TForm2.Button4Click(Sender: TObject);
 var
  buttonSelected : Integer;
begin

     buttonSelected := MessageDlg('Soll das Programm aus der Liste entfernt werden? ', mtCustom, [mbYes,mbCancel], 0);
     if buttonSelected = mrYes then ShowMessage('Programm wurde entfernt.');
        Listbox1.Items.Delete(Listbox1.ItemIndex);
     if buttonSelected = mrNo then Action := caNone;
       end;

ich wäre dankbar wenn ihr mir bei meinen problemen helfen könntet.
Evtl. ist der titel etwas unglücklich ausgedrückt, mir fällt im augenblick kein passender ein

mfg Johnny Bravo
  Mit Zitat antworten Zitat