Delphi XE 10.1
Napravio sam klasu i interface za rad za excelom. Moram učitati čeliju koju korisnik odabere (dblclick), kasnije export.
Radi ok, osim jedne stvari: napravio sam OnDblCLick za excel - korisnikov dblclik na čeliju u excel tablici. Ako otvorim 2 excel-a (različiti za različite podatke), svaki ima svoju proceduru za DblClik, DblClik na jednom izvršava obje procedure u Delphi-u ali na aktivno Excelu.
Valjda sam objasnio problem...
KOristim excel2010 i kreiram klasi:
[code]
constructor tExcelClass.Create(FileName: string; Show: boolean);
begin
inherited Create;
LCID := GetUserDefaultLCID;
LCID := LOCALE_USER_DEFAULT;
fCanClose := true;
fExcelApp := TExcelApplication.Create(nil);
fExcelApp.Connect;
fExcelApp.Visible[LCID] := Show;
fFileName := FileName;
if FileName <> '' then fExcelApp.Workbooks.Open(FileName, EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , lcid);
// za xls2000 if FileName <> '' then fExcelApp.Workbooks.Open(FileName, EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , EmptyParam , lcid );
fExcelApp.OnSheetBeforeDoubleClick := self.DblClick;
fExcelApp.OnWorkbookBeforeClose := WorkbookBeforeClose;
fExcelApp.DisplayAlerts[LCID] := false;
fAktCell := tNewCel.Create(self);
fTimer := TTimer.Create(nil);
fTimer.Enabled := false;
fTimer.Interval := 1000;
fTimer.OnTimer := self.Timer1Timer;
fFirstSheetName := (fExcelApp.ActiveWorkbook.ActiveSheet as _WorkSheet).Name;
end;
...
procedure tExcelClass.DblClick(Sender: TObject; const Sh: IDispatch; const Target: ExcelRange; var Cancel: WordBool);
var s: string;
begin
if Assigned(Self.fProcCtrlEnter) then
fProcCtrlEnter(self);
Cancel := True;
end;
[/Code]
Probao sam sa dodjelom fExcelApp.Tag, koja je u proceduri tExcelClass.DblCLick parametar Sender, ali mi se proc. starta za oba excel file-a.
Ima li tko ideju kako znati u kojem excelu je okinut DblClick?