Ĺadny brzuch
Witajcie, postanowiłem zrobić sobie mała aplikację. Program, w którym mógłbym zapisywać sobie różne notatki, ewidencje godzin pracy, naliczanie pensji i taki mały panelik ze skrótami do najbardziej potrzebnych mi programów. W pracy mam taka sytuację, że często mmusze korzystać z kilkunastu programów naraz. Wszystko już napisałemi działą poprawnie ale nie mam pomysłu jak zrobić z tymi skrótami do aplikacji. Oczywiście mógłbym sobie zrobić 100 skrótów na pulpicie ale to komputer służbowy więc nie korzystam z niego tylko ja. Miałem koncepcję taką, że chciałem zrobić toolbar i przycisk "dodaj", po naciśnięciu przycisku wybieram program a na pasku w aplikacji dodaje się mały przycisk z ikonką, tylko włąśnie nei wiem czy jest możliwosc takiej manipulacji toolbarem, a może ktoś ma lepszy pomysł? Z góry dzięki za rady.
Ja bym dodał katalog w głównym katalogu aplikacji, gdzie zapisywałbym skróty (w Windowsie to są po prostu pliki budową przypominające ini, i chyba nawet nimi są :D). No i ikonki tychże plików wyświetlałbym na własnym komponencie ściągniętym funkcjonalnością i wyglądem z jakiegoś linuksa :)
Wyglądałoby to tak:
______________________
||____|__opis_________|
||ikona|__programu____|
||____|_______________|
//edit:
Z tym sie nie zgodze. Skroty okienkowe to sa pliki binarne, ich notatnikiem nie wyedytujesz.
No to w takim razie pomyliło mi się ze skrótami internetowymi :)
Użytkownik pbnan edytował ten post 20 styczeń 2007, 17:11
Miałem koncepcję taką, że chciałem zrobić toolbar i przycisk "dodaj", po naciśnięciu przycisku wybieram program a na pasku w aplikacji dodaje się mały przycisk z ikonką, tylko włąśnie nei wiem czy jest możliwosc takiej manipulacji toolbarem, a może ktoś ma lepszy pomysł? Z góry dzięki za rady.
Ja bym właśnie tak to rozwiązał, bo jest to rozwiązanie praktyczne. A o to chyba właśnie chodzi w tym programie.
Możesz to zrobić tak, jak napisze poniżej. Jest to jedna z bardzo wielu możliwości, do tego jest bardzo prosta i schematyczna - oparta na pliku tekstowym i TStringList. Naturalnie możesz wykorzystać do tego celu rejestr, pliki typowane, XML (to rozwiązanie polecam) itp.
1. Dodajmy zmienną globalną:
vFiles: TStringList;
2. W OnCreate formy na przykład tak:
var i: WORD; Btn: TToolButton; //przycisk begin vFiles := TStringList.Create(); if (not (FileExists(extractFilePath(Application.ExeName) + 'dane.txt'))) then EXIT; //gdy brak pliku opuszczamy procedure vFiles.LoadFromFile(ExtractFilePath(Application.ExeName) + 'dane.txt'); //wczytujemy plik for i := 0 to vFiles.Count - 1 do begin {tworzymy przyciski} btn := TToolButton.Create(ToolBar1); btn.Parent := toolbar1; btn.Style := tbsButton; btn.SetBounds(0, 0, 25, 25); btn.Show; btn.onclick := Otworz; //Otworz to nazwa procedury, ktora stworzymy {tutaj tez mozesz wczytywac ikonki na przycisk} end;
3. Do listy procedur dopisujemy deklaracje:
procedure Otworz(Sender: TObject);
i uzupełniamy ją na przykład tak:
procedure TForm1.Otworz(Sender: TObject); begin if (Sender is TToolButton) then ShellexeCute(Application.Handle, 'open', PChar(vFiles[(Sender as TToolButton).index]), nil, nil, SW_SHOWNORMAL); end;
4. Nie zapomnij dodać ShellApi do listy modułów.
5. Dodawanie nowych pozycji
vFiles.Add(OpenDialog1.FileName); {i tak samo jak na poczatku, w sumie mozesz ten fragment dac do osobnej procedury} btn := TToolButton.Create(ToolBar1); btn.Parent := toolbar1; btn.Style := tbsButton; btn.SetBounds(0, 0, 25, 25); btn.Show; btn.onclick := Otworz;
6.Zapis możesz dać na przykład w zdarzeniu OnClose Formy;
vFiles.SaveToFile(extractFilePath(Application.exename) + 'dane.txt');
Plik powstanie w katalogu aplikacji.
Jak wspomniałem to bardzo proste rozwiązanie, które na pewno należy ulepszyć. Pisane z pamięci, więc 100% gwarancji, że zadziała nie dam.
Ja bym dodał katalog w głównym katalogu aplikacji, gdzie zapisywałbym skróty (w Windowsie to są po prostu pliki budową przypominające ini, i chyba nawet nimi są :D ). Z tym sie nie zgodze. Skroty okienkowe to sa pliki binarne, ich notatnikiem nie wyedytujesz.
Ja bym w pliku *.ini zapisywal wszystkie skroty. Wiesz jak wyglada playlista *.pls od srodka? To ja bym zrobil tak samo, tlyko inne nazwy wartosci bym dal. :)
@p1101 danke very much, dokładnie o coś takiego mi się rozchodziło. EOT.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Ja bym dodał katalog w głównym katalogu aplikacji, gdzie zapisywałbym skróty (w Windowsie to są po prostu pliki budową przypominające ini, i chyba nawet nimi są :D). No i ikonki tychże plików wyświetlałbym na własnym komponencie ściągniętym funkcjonalnością i wyglądem z jakiegoś linuksa :)
Wyglądałoby to tak:
______________________
||____|__opis_________|
||ikona|__programu____|
||____|_______________|
//edit:
Z tym sie nie zgodze. Skroty okienkowe to sa pliki binarne, ich notatnikiem nie wyedytujesz.
No to w takim razie pomyliło mi się ze skrótami internetowymi :)
Użytkownik pbnan edytował ten post 20 styczeń 2007, 17:11
Miałem koncepcję taką, że chciałem zrobić toolbar i przycisk "dodaj", po naciśnięciu przycisku wybieram program a na pasku w aplikacji dodaje się mały przycisk z ikonką, tylko włąśnie nei wiem czy jest możliwosc takiej manipulacji toolbarem, a może ktoś ma lepszy pomysł? Z góry dzięki za rady.
Ja bym właśnie tak to rozwiązał, bo jest to rozwiązanie praktyczne. A o to chyba właśnie chodzi w tym programie.
Możesz to zrobić tak, jak napisze poniżej. Jest to jedna z bardzo wielu możliwości, do tego jest bardzo prosta i schematyczna - oparta na pliku tekstowym i TStringList. Naturalnie możesz wykorzystać do tego celu rejestr, pliki typowane, XML (to rozwiązanie polecam) itp.
1. Dodajmy zmienną globalną:
vFiles: TStringList;
2. W OnCreate formy na przykład tak:
var i: WORD; Btn: TToolButton; //przycisk begin vFiles := TStringList.Create(); if (not (FileExists(extractFilePath(Application.ExeName) + 'dane.txt'))) then EXIT; //gdy brak pliku opuszczamy procedure vFiles.LoadFromFile(ExtractFilePath(Application.ExeName) + 'dane.txt'); //wczytujemy plik for i := 0 to vFiles.Count - 1 do begin {tworzymy przyciski} btn := TToolButton.Create(ToolBar1); btn.Parent := toolbar1; btn.Style := tbsButton; btn.SetBounds(0, 0, 25, 25); btn.Show; btn.onclick := Otworz; //Otworz to nazwa procedury, ktora stworzymy {tutaj tez mozesz wczytywac ikonki na przycisk} end;
3. Do listy procedur dopisujemy deklaracje:
procedure Otworz(Sender: TObject);
i uzupełniamy ją na przykład tak:
procedure TForm1.Otworz(Sender: TObject); begin if (Sender is TToolButton) then ShellexeCute(Application.Handle, 'open', PChar(vFiles[(Sender as TToolButton).index]), nil, nil, SW_SHOWNORMAL); end;
4. Nie zapomnij dodać ShellApi do listy modułów.
5. Dodawanie nowych pozycji
vFiles.Add(OpenDialog1.FileName); {i tak samo jak na poczatku, w sumie mozesz ten fragment dac do osobnej procedury} btn := TToolButton.Create(ToolBar1); btn.Parent := toolbar1; btn.Style := tbsButton; btn.SetBounds(0, 0, 25, 25); btn.Show; btn.onclick := Otworz;
6.Zapis możesz dać na przykład w zdarzeniu OnClose Formy;
vFiles.SaveToFile(extractFilePath(Application.exename) + 'dane.txt');
Plik powstanie w katalogu aplikacji.
Jak wspomniałem to bardzo proste rozwiązanie, które na pewno należy ulepszyć. Pisane z pamięci, więc 100% gwarancji, że zadziała nie dam.
Ja bym dodał katalog w głównym katalogu aplikacji, gdzie zapisywałbym skróty (w Windowsie to są po prostu pliki budową przypominające ini, i chyba nawet nimi są :D ). Z tym sie nie zgodze. Skroty okienkowe to sa pliki binarne, ich notatnikiem nie wyedytujesz.
Ja bym w pliku *.ini zapisywal wszystkie skroty. Wiesz jak wyglada playlista *.pls od srodka? To ja bym zrobil tak samo, tlyko inne nazwy wartosci bym dal. :)
@p1101 danke very much, dokładnie o coś takiego mi się rozchodziło. EOT.