Probleme beim erstellen eines Listitems
Hallo,
ich bin gerade dabei zu verzweifeln. Ich habe Google schon leergegoogelt und bin immer noch nicht schlauer. Ich habe mit dem Nachfolgenden Code die Möglichkeit geschaffen, auf das Droppen eines Files auf ein bestimmtes Panel zu reagieren. Nach dem Droppen des Files soll das Programm einen Eintrag in einen Listview machen, der sich auf dem selben Formular befindet wie das Panel, auf das ich das File fallen lasse. Es existiert ein 2. Formular, auf dem sich ein ICON-Chooser und 2 Edit felder befinden. Dort ist allerdings nichts weiter programmiert. Beide Formulare werde beim Start erzeugt. Beim klick auf das Panel funktioniert das Anlegen eines Items. Wird die selbe Funktion wie oben beschrieben durch das Droppen ausgelöst kommt eine Schutzverletzung. Habe nun schon die Prozedur in den Public-Abschnitt geschoben, weil ich dachte, dass es daran liegt. Ohne Wirkung. Weiss jemand worans liegt? Gruß THomas
Delphi-Quellcode:
unit Applet1Form;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, shellapi, checklst,IconDialog, ChangeIcDialog, IconCtls, controlpanel; type TPanel = class(ExtCtrls.TPanel) private procedure FWM_DropFiles(var Msg: TMessage); message WM_DROPFILES; end; type TfmApplet1 = class(TForm) btnOK: TButton; btnCancel: TButton; btnApply: TButton; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; TabSheet4: TTabSheet; TabSheet5: TTabSheet; Label1: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Panel1: TPanel; GroupBox1: TGroupBox; prgpfad: TMemo; prgname: TMemo; Label2: TLabel; Label3: TLabel; prgicon: TPaintBox; CheckListBox1: TCheckListBox; ListView2: TListView; BitBtn3: TBitBtn; BitBtn4: TBitBtn; Label4: TLabel; ListBox1: TListBox; Image2: TImage; ComboBox1: TComboBox; Label5: TLabel; Label6: TLabel; Edit1: TEdit; ListView1: TListView; procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Panel1Click(Sender: TObject); private { Private declarations } public { Public declarations } item:TListItem; procedure addicon(name,pfad,param:string; icon:integer); end; var fmApplet1: TfmApplet1; implementation uses Unit1; {$R *.DFM} procedure TfmApplet1.addicon(name,pfad,param:string; icon:integer); begin item:=self.listview1.items.add; item.Caption:=name; item.SubItems.Add(pfad); item.subitems.add(param); item.SubItems.add(inttostr(icon)); end; procedure TPanel.FWM_DropFiles(var Msg: TMessage); var i, anzahl, size: integer; Dateiname: String; begin inherited; Dateiname := ''; anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0); for i := 0 to (anzahl - 1) do begin size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; SetLength(Dateiname, size); SetLength(Dateiname, DragQueryFile(Msg.WParam,i , @Dateiname[1], size)); //hier dein source - in "Dateiname" ist der name des droped objectes if (ExtractFileExt(dateiname)='.exe') or (ExtractFileExt(dateiname)='.com') then begin form1.dfsIconComboBox1.FileName:=dateiname; form1.dfsIconComboBox1.enabled:=true; if form1.showmodal=mrok then begin fmApplet1.addicon(form1.edit1.text,dateiname,form1.edit2.text,form1.dfsiconcombobox1.itemindex); end; end; end; DragFinish(Msg.WParam); end; procedure TfmApplet1.FormCreate(Sender: TObject); begin DragAcceptFiles(panel1.handle, True); panel1.Hint:='Hierhin muss die Anwendung gezogen werden, die eingerichtet'+chr(13)+'werden soll. Eine Verknüpfung funktioniert NICHT!'; end; procedure TfmApplet1.BitBtn1Click(Sender: TObject); begin if listview1.SelCount>0 then begin Messagebox(self.handle,pchar('Sind sie sicher, dass Sie das Programm '+listview1.selected.caption+' löschen wollen?'),'Frage',32); listview1.Selected.Delete; end else begin Messagebox(self.handle,'Es ist kein Programm gewählt!','Fehler',16); end; end; procedure TfmApplet1.Panel1Click(Sender: TObject); begin addicon('TEST','TEST','test',2); end; end. |
Re: Probleme beim erstellen eines Listitems
Hi,
mit der ändernung des aufrufs auf
Delphi-Quellcode:
und dem Befehl im OnClick-Ereignis des Panels funktioniert es.
self.click();
Aber wie übergebe ich nun die Parameter? |
Re: Probleme beim erstellen eines Listitems
Welche Parameter
|
Re: Probleme beim erstellen eines Listitems
Moin Thomas,
also bei mir funktioniert das auch so. Setz' doch mal auf die markanten Stellen einen Breakpoint, um festzustellen, wodurch die AV ausgelöst wird. Irgendetwas scheint da nicht zu existieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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