AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox und Message Box Problem

Ein Thema von Johnny Bravo · begonnen am 7. Jun 2008 · letzter Beitrag vom 7. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Johnny Bravo

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

ListBox und Message Box Problem

  Alt 7. Jun 2008, 11: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 11:42
Hallo und Willkommen in der DP .
Bitte gewöhne Dir an, nur eine Frage pro Thread zu stellen. Zum 1. Problem:
Delphi-Quellcode:
if ListBox.ItemIndex > -1 then
  ShellExecute(Handle,'open',PChar(ListBox.Items[ListBox.ItemsIndex]),PChar(Parameter),nil,SW_SHOW);
Zum 2. Problem: da fehlen ein begin und end. Die kannst Du nur weglassen, wenn danach eine einzelne Anweisung folgt. Das ist bei Dir aber nicht der Fall.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 11:43
Hi,

nach Deinen If-Abfragen fehlen auch die Begin und Endblöcke:

Delphi-Quellcode:
if buttonSelected = mrYes then
begin
  ShowMessage('Programm wurde entfernt.');
  Listbox1.Items.Delete(Listbox1.ItemIndex);
end;
Das ist an mehreren Stellen in Deinem Code so.

Desweiteren fehlen beim ersten Code, den Du gepostet hast, die Resourcenschutzblöcke. (try-finally).

An das aktuell ausgewählte Item der ListBox kommst Du über Delphi-Referenz durchsuchenTListBox.ItemIndex dran:

Delphi-Quellcode:
var
  Err: Integer;
begin
  if ListBox.ItemIndex > -1 then
  begin
    Err:= ShellExecute(0,
               Nil,
               PChar(ListBox.Items[ListBox.ItemIndex]),
               Pchar('-Parameter'),
               Pchar('C:\StartDir'),
               SW_NORMAL);
               if Err <= 32 then
    Showmessage(ShellExecuteErrMessage(Err));
  end;
end;
[edit] Im ersten Code ist übrigens noch ein begin zuviel [/edit]
  Mit Zitat antworten Zitat
7. Jun 2008, 11:47
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Delphi-Frage
Johnny Bravo

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

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:36
Hi, danke für die antworten, und sorry für die vielen fragen und das falsche unterforum

@DieMuhkuh
stimmt, hab ein begin und end zuviel gehabt, thx.

Wenn ich die Datei C:\programm.exe hinzufüge,und über einen anderen button starte, spuckt mit deinem code Shellexecute fehlermeldung 2 aus, Programm wurde nicht gefunden.

@Manuel Rauber

Mit dem Code bekomme ich dieselbe fehlermeldung

Dafür funktionert jetzt das klicken auf abbrechen, danke
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:39
Also schizophren bin ich (noch) nicht. Manuel Rauber und Die Muhkuh sind die gleiche Person

Bist Du auch sicher, dass Du im ShellExecute die zwei Parameter PChar('-Parameter') und PChar('C:\StartDir') richtig angegeben hast?

Wenn Du diese nicht benötigst, ersetze sich mal durch nil
  Mit Zitat antworten Zitat
Johnny Bravo

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

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:47
Lol, hab mich verlesen, sorry

Danke, mit nil gehts jetzt.

Mir fällt noch was ein:
wenn ich eine Datei zur listbox hinzufüge, bekomme ich den Kompletten Dateipfad angzeigt. Kann man über eine Messagebox oder ein 2tes Formular realisieren, das man aktuellen pfad der datei angezeigt bekommt, darunter in ein Edit den Namen eingeben kann, der in der Listbox angezeigt wird?

Oder ist das zu aufwendig?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:49
in ein Edit kannst Du alle möglichen Strings eingeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:49
Natürlich geht das, bringt aber etwas mehr Programmieraufwand mit sich. Du musst Daten (bzw. Objekte) an jeden Eintrag hängen, in dem der Pfad zur Datei steht.

Da gab es erst kürzlich einen Thread dazu, den findest Du sicherlich über die Suchfunktion.

Ich würde das ganze mit einem zweiten Formular machen und nicht mit 2 MessageBoxen.
  Mit Zitat antworten Zitat
Johnny Bravo

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

Re: ListBox und Message Box Problem

  Alt 7. Jun 2008, 12:54
ich war nur gerade etwas perplex wegen des aufwandes.

dann werde ich mal ein 2tes formular öffnen lassen, danke schonmal.


EDIT:
so das 2te formular lässt sich öffnen problemlos.

Doch wie kann ich dann die daten aus dem Edit im 2ten formular in die Listbox im ersten Formular bekommen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz