Ĺadny brzuch
Witam!
mam mały program. Chodziaż wydaje mi się ze jakiś paranormalny bo wszystko niby jest ok
Ale napiszę o co mi chodzi. Piszę program skromny i nie chce mi sie oddzielnie na każdego TLabel(a) pisać
Funkcji bo jest to chyba zbędne dlatego idę na skróty a mianowicie:
{ funkcja zwraca wartosc nazwy scieszki gdzie znajduje sie aplikacja } function AppPath : string; Result := ExtractFilePath(ParamStr(0)); end; { otwieranie pliku } function TMainForm.OpenFileAssociated(const FileName: string; ShowCommand: Integer): Cardinal; begin Result := ShellExecute(0, 'open', PCHar(FileName), nil, nil, ShowCommand); end; { definicja klikniecia na label } procedure TMainForm.SetClick(Sender: TObject); {$H-} // ------------ > ShortString const SETUP = 'data\setup.exe'; README = 'data\readme.txt'; BROWSE = 'app\data'; {$H+} var s : string; begin s := GetAppPath; // nazwa sciezki aplikacji... if (s[Length(s)] <> '\') then s := s + '\'; // jezeli ostatni znak nazwy sciezki jest rozny od '\' to go dodaj with (Sender as TLabel) do case (Tag) of 1: OpenFileAssociated(s + SETUP; 2: OpenFileAssociated(s + README); 3: OpenFileAssociated(s + BROWSE); 4: Close(); end; end;
I teraz płenta są dokładnie 4 TLabel(e) ostatni jest mało ważny jak widać wyżej (nie ważne)
Ale dlaczego podczas testów jak kliknę na któregoś z nich to mi wyskakuje jakiś error <_<
Dodam ze Name te lalele mają standardowo czyli "Label" od 1 do 4 - deklaracja :
procedure TMainForm.FormCreate(Sender: TObject); const lnPrefix = 'Label'; var L: TLabel; i: Integer; begin for i := 1 to 4 do begin L := TLabel(FindComponent(lnPrefix + IntToStr(i))); L.onmouseenter := SetLabMouseEnter; L.onmouseleave := SetLabMouseLeave; L.onclick := SetClick; L.Tag := i; end; end;
czy ktoś coś z tego rozumie bo ja nie wydaje mi się że wszystko jest ok a jednak jakiś byk wyskakuje.....
Pozdrawiam!
funkcja otwierania pliku prawidłowo sie nazywa bo końcowy mankament przeoczyłem znaczy zle wkleilem :D
function TMainForm.OpenFileAssociated(const FileName: string; ShowCommand: Integer = SW_SHOWNORMAL): Cardinal;
w procedurze TMainForm.SetClick(Sender: TObject); zamiast
s := GetAppPath;
powinno być (mój błąd)
s := AppPath;
DOBRA! już wiem o co chodzi sorry że zaśmiecam :)
Użytkownik FirStPerSon edytował ten post 26 maj 2007, 12:17
to byś powiedział forumowiczom jaki problem może był...
to byś powiedział forumowiczom jaki problem może był...
Problem był banalny bo w procedurze : procedure TMainForm.FormCreate(Sender: TObject); Miałem źle wpisaną pętle zamiast:
for i := 1 to 4 do begin
to miałem:
for i := 0 to 4 do begin
z przyzwyczajenia <_< Mój błąd. :>
Program już śmiga bez zarzutów
- teraz się biorę za pisanie jakiegoś systemu operacyjnego :D
pozdrawiam..
Użytkownik FirStPerSon edytował ten post 28 maj 2007, 01:18
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
mam mały program. Chodziaż wydaje mi się ze jakiś paranormalny bo wszystko niby jest ok
Ale napiszę o co mi chodzi. Piszę program skromny i nie chce mi sie oddzielnie na każdego TLabel(a) pisać
Funkcji bo jest to chyba zbędne dlatego idę na skróty a mianowicie:
{ funkcja zwraca wartosc nazwy scieszki gdzie znajduje sie aplikacja } function AppPath : string; Result := ExtractFilePath(ParamStr(0)); end; { otwieranie pliku } function TMainForm.OpenFileAssociated(const FileName: string; ShowCommand: Integer): Cardinal; begin Result := ShellExecute(0, 'open', PCHar(FileName), nil, nil, ShowCommand); end; { definicja klikniecia na label } procedure TMainForm.SetClick(Sender: TObject); {$H-} // ------------ > ShortString const SETUP = 'data\setup.exe'; README = 'data\readme.txt'; BROWSE = 'app\data'; {$H+} var s : string; begin s := GetAppPath; // nazwa sciezki aplikacji... if (s[Length(s)] <> '\') then s := s + '\'; // jezeli ostatni znak nazwy sciezki jest rozny od '\' to go dodaj with (Sender as TLabel) do case (Tag) of 1: OpenFileAssociated(s + SETUP; 2: OpenFileAssociated(s + README); 3: OpenFileAssociated(s + BROWSE); 4: Close(); end; end;
I teraz płenta są dokładnie 4 TLabel(e) ostatni jest mało ważny jak widać wyżej (nie ważne)
Ale dlaczego podczas testów jak kliknę na któregoś z nich to mi wyskakuje jakiś error <_<
Dodam ze Name te lalele mają standardowo czyli "Label" od 1 do 4 - deklaracja :
procedure TMainForm.FormCreate(Sender: TObject); const lnPrefix = 'Label'; var L: TLabel; i: Integer; begin for i := 1 to 4 do begin L := TLabel(FindComponent(lnPrefix + IntToStr(i))); L.onmouseenter := SetLabMouseEnter; L.onmouseleave := SetLabMouseLeave; L.onclick := SetClick; L.Tag := i; end; end;
czy ktoś coś z tego rozumie bo ja nie wydaje mi się że wszystko jest ok a jednak jakiś byk wyskakuje.....
Pozdrawiam!
funkcja otwierania pliku prawidłowo sie nazywa bo końcowy mankament przeoczyłem znaczy zle wkleilem :D
function TMainForm.OpenFileAssociated(const FileName: string; ShowCommand: Integer = SW_SHOWNORMAL): Cardinal;
w procedurze TMainForm.SetClick(Sender: TObject); zamiast
s := GetAppPath;
powinno być (mój błąd)
s := AppPath;
DOBRA! już wiem o co chodzi sorry że zaśmiecam :)
Użytkownik FirStPerSon edytował ten post 26 maj 2007, 12:17
to byś powiedział forumowiczom jaki problem może był...
to byś powiedział forumowiczom jaki problem może był...
Problem był banalny bo w procedurze : procedure TMainForm.FormCreate(Sender: TObject); Miałem źle wpisaną pętle zamiast:
for i := 1 to 4 do begin
to miałem:
for i := 0 to 4 do begin
z przyzwyczajenia <_< Mój błąd. :>
Program już śmiga bez zarzutów
- teraz się biorę za pisanie jakiegoś systemu operacyjnego :D
pozdrawiam..
Użytkownik FirStPerSon edytował ten post 28 maj 2007, 01:18