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