bir formum var, bunun içerisine sürüklenip bırakılan her türlü dosya için form üzerinde
bir buton oluşturmak ve butona tıklayıncada bu sürüklenip bırakılan programı çalıştırmak istiyorum
tabi program kapatılıp yeniden açıldığında bu butonlar kaybolmayacak, yani bunların kaydını bir
yerde tutacak ve tabii ki her açılışta bunları tekrar forma yerleştirecek
böyle bir program için siz nasıl bir mantık geliştirirdiniz? yani nasıl bir sistem uygulardınız.
ben sürüklenıp bırakılan her dosya için programın olduğu yerde bir kısayol oluşturduktan sonra,
butonları bu kısayollara atamayı düşünüyorum, ve tabii ki kayıtlarıda herhangibir databasede saklamayı
düşündüm (ancak mdb, db yada dbf gibi birşey kullanmak istemiyorum, ini yada onun gibi bişey)
ancak ini dosyasının kullanımı burada pek uygun olmadı
siz olsanız nasıl bir şey yapardınız?
siz olsanız bu program için nasıl bir mantık yazarsınız?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
siz olsanız bu program için nasıl bir mantık yazarsınız?
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Registry kullanmak da bir alternatif olabilir...
Ya da exe'nin yaninda formatini tamamen sizin belirleyecegi bir text dosyasi....
Ama ayrica bir kısayol oluşturmaya gerek olmadigini dusunuyorum. Yani programin linkini de text dosya ya da registry'ye kaydedebilirsiniz. Yani exe'nin yaninda bir suru de kısayol olmasına gerek yok. Fuzuli kalabalik olur bence...
Ya da exe'nin yaninda formatini tamamen sizin belirleyecegi bir text dosyasi....
Ama ayrica bir kısayol oluşturmaya gerek olmadigini dusunuyorum. Yani programin linkini de text dosya ya da registry'ye kaydedebilirsiniz. Yani exe'nin yaninda bir suru de kısayol olmasına gerek yok. Fuzuli kalabalik olur bence...
bence inifile kullan rahatlıkla yaparsın
ben inifile kullanımlarımı getini ve setini olarak iki asamada yapıyorum
mesela
tabi sen kullanırken Tinifile ın ReadSection yada ReadSections metodlarını da kullanacaksın okurken
buna gore de butonları ve kısayollarını olusturacaksın
soyle bir mantık la ise naslayabilirsin:
surukle bırak sonucunda inifile a buton1 ve her seferinde artacak bir section girilir
deger olarak da bu dosyanın tam yolunu kullanırsın
yani yapı su sekilde olur
[button1]
path=C:\Program Files\MyPrg\My.exe
[button2]
path=C:\Program Files\Vs\VsVs.exe
bunları soyle bir yontemle okuyabilirsin
tabi ben kendi yazdıklarımdan alakasız yordamlar yapıstırıyorum ama anlarsın diye yenisini yazmıyorum:)
bu sekilde okuduktan sonra sıra ile butonları form uzerinde olusturur
ExtractFileName ile Path den Filename i butonun captionuna yazdırırsın
ve soyle basit bir yordamı tum butanların click yordamına yazarsın
simdilik aklıma gelenler bunlar
aslında vaktim olsa hepsini yazmak da isterdim
ben inifile kullanımlarımı getini ve setini olarak iki asamada yapıyorum
mesela
Kod: Tümünü seç
function AppDir:String;
begin
result:=ExtractFileDir(Application.ExeName);
end;
procedure GetIni;
begin
with TIniFile.Create(AppDir + '\' + INI_FILE) do
begin
oxPort.ItemIndex := ReadInteger('Com Setting', 'Com Port', 1);
oxBaudrate.ItemIndex := ReadInteger('Com Setting', 'Baudrate', 0);
oxParity.ItemIndex := ReadInteger('Com Setting', 'Parity', 0);
oxDataBit.ItemIndex := ReadInteger('Com Setting', 'DataBit', 0);
Destroy;
end;
end;
procedure SetIni;
begin
with TIniFile.Create(AppDir + '\' + INI_FILE) do
begin
//HABERLEŞME
WriteInteger('Com Setting', 'Com Port', oxPort.ItemIndex);
WriteInteger('Com Setting', 'Baudrate', oxBaudrate.ItemIndex);
WriteInteger('Com Setting', 'Parity', oxParity.ItemIndex);
WriteInteger('Com Setting', 'DataBit', oxDataBit.ItemIndex);
Destroy;
end;
end;
buna gore de butonları ve kısayollarını olusturacaksın
soyle bir mantık la ise naslayabilirsin:
surukle bırak sonucunda inifile a buton1 ve her seferinde artacak bir section girilir
deger olarak da bu dosyanın tam yolunu kullanırsın
yani yapı su sekilde olur
[button1]
path=C:\Program Files\MyPrg\My.exe
[button2]
path=C:\Program Files\Vs\VsVs.exe
bunları soyle bir yontemle okuyabilirsin
Kod: Tümünü seç
procedure TSystem.LoadFromFile;
var
i:Integer;
sect:String;
begin
with TIniFile.Create(MainDir+'\'+SYS_INI_FILE) do
begin
i:=1;
while SectionExists('System '+IntToStr(i)) do
begin
sect:='System '+IntToStr(i);
with FItems.Add do
begin
FNo:= i;
FComment:=ReadString(sect,'Comment','');
FSysType:=TSystemType(ReadInteger(sect,'Type',Ord(stSerial)));
FSerProtocol:=TSerProtocol(ReadInteger(sect,'Serial Protocol',Ord(spHDLC)));
FIpAdress:=ReadString(sect,'Ip Adress','0.0.0.0');
FComPort:=TComPort(ReadInteger(sect,'Com Port',Ord(cpCom1)));
FBaudrate:=TBaudrate(ReadInteger(sect,'Baudrate',Ord(br19200)));
ScalesStr:=ReadString(sect,'Scales','');
end;
inc(i);
end;
Free;
end;
end;
bu sekilde okuduktan sonra sıra ile butonları form uzerinde olusturur
ExtractFileName ile Path den Filename i butonun captionuna yazdırırsın
ve soyle basit bir yordamı tum butanların click yordamına yazarsın
Kod: Tümünü seç
procedure ButtonClick(Sender: TObject);
var
sect,path:String;
begin
sect:=(Sender as TButton).Name;
with TIniFile.Create(AppDir + '\' + INI_FILE) do
begin
path:=ReadString(sect,'Path','');
Free;
end;
if path<>'' then
WinExec(PChar(path),SW_SHOW);
end;
aslında vaktim olsa hepsini yazmak da isterdim
ÜŞENME,ERTELEME,VAZGEÇME