| Autor | Správa |
Siriuse
 Užívateľ
 Založený: 23.05.2009 Príspevky: 81 Bydlisko: Michalovce
 | Zaslal: So 06.06.09 18:10 |   |
Ako by som spravil asociaciu suboru s programom? Tak ze kliknem dvakrat na subor a v programe mi ho hned nacita? Napriklad mam stream a ked ho otvorim hned mi otvory dany program a obsah premennych nahra do memo. V programe je procedura otvor, pri ktorej sa otvory open dialog a vyberie sa a vsetko nacita. Ale tak ze by po dvojkliku na subor by to robilo automaticky a subor by mal vlastnu ikonku tak to teda neviem. Niekto mi vravel ze to ma nieco s parametrami. Neviete poradit nejaky tutorial na nete alebo navod alebo mi rovno tu pomoct? Vopred dakujem... |
| |
   |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1046
 | Zaslal: So 06.06.09 19:24 |   |
Tak najprv asociácia:
1.) Vytvor si súbor xxx.reg, kde xxx je názov tvojej prípony. Obsah súbora bude toto:
| kód: | Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.xxx]
@="xxxFile" |
2.) Vytvor si súbor xxxFile.reg. Obsah bude takýto:
| kód: | Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\xxxFile]
@="xxx prehliadac"
[HKEY_CLASSES_ROOT\xxxFile\defaultIcon]
@="shell32.dll,41"
[HKEY_CLASSES_ROOT\xxxFile\shell]
@="open"
[HKEY_CLASSES_ROOT\xxxFile\shell\open]
[HKEY_CLASSES_ROOT\xxxFile\shell\open\Command]
@="\"D:\\Program Files\\HlavnyProgram.exe\" \"%1\"" |
3.) Po vytvorení ich obe zapíš do registru (klikni na nich a potvrď, že chceš zapísať dáta do registru).
POZNÁMKA: To "shell32.dll,41" v druhom výpise je ikona, ktorá sa bude zobrazovať pri súborooch s príponou *.xxx (tú príponu si samozrejme tiež zmeň na takú, akú potrebuješ).
Teraz spúšťanie:
Takže už máš v počítači dané, aby ti súbory xxx otváral program HlavnyProgram.exe, no ešte chýba ošetriť tento program tak, aby hneď po spustení zistil, či bol spustený s nejakým parametrom. To zistíš takto:
| kód: | nazovSuboru: string;
nazovSuboru:= ParamStr(1); |
Ak sa nazovSuboru rovná '' (prázdny znak), tak program nie je spustený s parametrom - teda nie je "kliknuté na subor xxx". V opačnom prípade je v premennej nazovSuboru názov spusteného xxx súboru a to je to, čo potrebuješ vedieť, keďže inak si názov získaval z OpenDialogu. |
| |
   |
 |
Siriuse
 Užívateľ
 Založený: 23.05.2009 Príspevky: 81 Bydlisko: Michalovce
 | Zaslal: So 18.07.09 16:42 |   |
no nejak to nejde, vobec sa ten program neespusti po kliknuti na subor, dostanem na vyber zoznam programov kde to mam otvorit a potom ked si tam najdem moj exe subor nic sa tam nestane |
| |
   |
 |
Siriuse
 Užívateľ
 Založený: 23.05.2009 Príspevky: 81 Bydlisko: Michalovce
 | Zaslal: Po 20.07.09 16:58 |   |
aaaaaha fajn uz mi to ide a ked si chcem zobrat vlastnu ukonku, co som nakreslil, a chcem ju ulozit rovno do EXEcka a odtial ju nahravat, ako na to? |
| |
   |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1046
 | Zaslal: Po 20.07.09 19:17 |   |
Na to je najjednoduchšie použiť Delphi utilitu na tvorbu zdrojov (resource) - Image Editor.
V menu Delphi vyber Tools a tam vyber Image Editor. Keď sa spustí tento editor, vyber možnosť File, New... a nakoniec Resource File (.res). V ďalšom okienku klikni pravým tlačidlom a vyber možnosť New, Icon. Vyber veľkosť ikony (16x16 alebo 32x32) a potvrď OK (nevýhodou je maximálny počet farieb - 16. Tzn, že ak máš nejakú graficky náročnejšiu ikonu, tak musíš zvoliť iný postup). Teraz to pridalo ikonu Icon1. Tú si premenuj na, napríklad, IKONA (raz klikni na jej názov a prepíš). Potom dva krát klikni na názov a cez schránku (Ctrl+V) vlož svoju ikonu (niekde trebárs v kreslení si ju skopíruj). Keď sa vloží, môžeš okno zavrieť a resoruce uložiť napríklad ako Zdroj.res do zložky, kde je tvoj projekt. Potom už iba programovo vykonaj toto:
Pod direktívu
(mala by sa nachádzať hneď pod implementation) pridaj riadok:
| kód: | | {$R Zdroj.res} // toto je názov zdroja (resource-u) |
Potom do OnCreate a OnDestroy hlavného formu pridaj:
| kód: | var
appIcon: TIcon;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
appIcon:= TIcon.Create;
appIcon.Handle:= LoadIcon(hInstance, 'IKONA'); // toto je názov ikony, pretože v zdroji ich môže byť viac
Application.Icon:= appIcon;
...
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
appIcon.Free;
end; |
Nakoniec v menu vyber možnosť Project a Build názov_projektu. Build dávaj stále, keď vykonáš nejakú zmenu v resourci. |
| |
   |
 |
Siriuse
 Užívateľ
 Založený: 23.05.2009 Príspevky: 81 Bydlisko: Michalovce
 | Zaslal: So 25.07.09 15:32 |   |
ale ja som myslel vlastnu ikonu suboru .xxx, vies jak tam bolo @="shell32.dll,41", a keby som chcel nejaku inu ikonu nie z dll kniznice ale rovno z execka ako by som to mal robit? |
| |
   |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1046
 | Zaslal: So 25.07.09 16:12 |   |
Tak tam uvedieš cestu k súboru, ale tuším, že musí byť v dosovom skrátenom formáte (8 znakov tvorí názov súboru a tri prípona). Takže namiesto pôvodného riadku by si ho zmenil na napríklad:
| kód: | | @="D:\PROGRA~1\FOXITR~1\FOXITR~1.EXE,1" |
Ak náhodou nevieš, ako sa tvoria skrátené názvy, pomôže ti funkcia function ExtractShortPathName(const FileName: string): string, ktorá berie za parameter cestu k súboru a vracia skrátený formát. |
| |
   |
 |
|