Zdravím,
mám prográmek s textovým editorem. Soubory, které chci načítat mám v OS asociované se svým programem. Takže poklepáním na soubor se program spustí, vytvoří novou záložku TabSheet, nový SynEdit a načte obsah souboru do SynEditu.
Mou otázkou je, zda je možné, když mám již svůj editor spuštěný, aby se další soubor otevřel v již spuštěném programu, jen by se vytvořila nová záložka. Zatím mi to funguje tak, že poklepem na další soubor se spustí další editor.
*
*
*
public
ID_AKTIVNI_ZALOZKY, ID: Integer;
AKTIVNI_SYNEDIT: String;
ZALOZKA: TTabSheet;
SPLITTER: TPairSplitter;
SPLITTER_SIDE: TPairSplitterSide;
SYNEDIT: TSynEdit;
*
*
*
PROCEDURE TForm1.FormActivate(Sender: TObject);
begin
IF ParamStr(1)<>'' THEN
begin
//vytvoří novou záložku
ZALOZKA:= TTabSheet.Create(PageControl1);
WITH ZALOZKA DO
begin
Parent:= PageControl1;
Name:= 'TAB_' + IntToStr(ID);
TabVisible:= TRUE;
Caption:= ChangeFileExt(ExtractFileName(ParamStr(1)),'');
ImageIndex:= 5;
end;
PageControl1.ActivePageIndex:= ZALOZKA.TabIndex;
ID_AKTIVNI_ZALOZKY:= ID;
//vytvoří splitter
SPLITTER:= TPairSplitter.Create(Form1);
WITH SPLITTER DO
begin
Parent:= ZALOZKA; //spliter bude zarovnaný k předem definovanému TabSheetu
Name:= 'SPLIT_' + IntToStr(ID);
Enabled:= TRUE;
//Zarovnání
AnchorParallel(akTop, 0,ZALOZKA);
AnchorParallel(akLeft, 0,ZALOZKA);
AnchorParallel(akRight, 0,ZALOZKA);
AnchorParallel(akBottom,0,ZALOZKA);
end;
SPLITTER.Sides[0].Width:= ROUND(PageControl1.Width /2); //nastaví šířku splitteru
//vytvoří 1.SynEdit
SYNEDIT:= TSynEdit.Create(Self);
WITH SYNEDIT DO
begin
Parent:= SPLITTER.Sides[0];
Name:= 'SynEdit_' + (IntToStr(ID)) + '_1';
Enabled:= TRUE;
Font.Size:= 12;
//
LineHighlightColor.Background:= clYellow;
HighLighter:= SynAnySyn1;
Lines.LoadFromFile(ParamStr(1));
//
onClick:= @SynEditClick;
OnKeyUp:= @SynEditKeyUp;
//Zarovnání
AnchorParallel(akTop, 0,SPLITTER.Sides[0]);
AnchorParallel(akLeft, 0,SPLITTER.Sides[0]);
AnchorParallel(akRight, 0,SPLITTER.Sides[0]);
AnchorParallel(akBottom,0,SPLITTER.Sides[0]);
end;
AKTIVNI_SYNEDIT:= SYNEDIT.Name;
//vytvoří 2.SynEdit
SYNEDIT:= TSynEdit.Create(Self);
WITH SYNEDIT DO
begin
Parent:= SPLITTER.Sides[1];
Name:= 'SynEdit_' + (IntToStr(ID)) + '_2';
Enabled:= TRUE;
Font.Size:= 12;
//
LineHighlightColor.Background:= clYellow;
HighLighter:= SynAnySyn1;
Lines.LoadFromFile(ParamStr(1));
//
onClick:= @SynEditClick;
OnKeyUp:= @SynEditKeyUp;
//Zarovnání
AnchorParallel(akTop, 0,SPLITTER.Sides[1]);
AnchorParallel(akLeft, 0,SPLITTER.Sides[1]);
AnchorParallel(akRight, 0,SPLITTER.Sides[1]);
AnchorParallel(akBottom,0,SPLITTER.Sides[1]);
end;
ID:= ID + 1;
end;
end;