Anonymní profil LAZAR – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil LAZAR – Programujte.comAnonymní profil LAZAR – Programujte.com

 

Příspěvky odeslané z IP adresy 91.221.213.–

LAZAR
Pascal › Načtení obsahu txt souboru d…
5. 3. 2023   #391134

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;

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý