Obecny czas to Sob 12:35, 30 Lis 2024 | Zaloguj się, by sprawdzić wiadomości
Zobacz posty bez odpowiedzi
Forum ..::Tibia Hack Team::.. Strona GłównaForum ..::Tibia Hack Team::.. Strona Główna
Użytkownicy Grupy Rejestracja Zaloguj

Delphi FAQ
Napisz nowy temat   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ..::Tibia Hack Team::.. Strona Główna » Delphi
Zobacz poprzedni temat | Zobacz następny temat  
Autor Wiadomość
admin
Administrator


Dołączył: 14 Cze 2007
Posty: 9
Przeczytał: 0 tematów

Ostrzeżeń: 0/6

PostWysłany: Czw 14:08, 14 Cze 2007    Temat postu: Delphi FAQ

1. Jak wyświetlić obrazek z rozszerzeniem *.jpg?
Do listy modułów uses dodaj słowo jpeg. To nie zadziała na pewno w Delphi 2, a być może w Delphi 3.

Image.Picture.LoadFromFile('C:\image.jpg');



--------------------------------------------------------------------------------


2. Jak wstawić do RichEdit jakieś symbole?
Najpierw musisz znać numer ASCII takiego znaku. W tym celu użyj mojego programu do podawania kodów ASCII. Jest to program z kodem źródłowym i żeby go używać musisz go skompilować. Żeby to zrobić potrzebujesz Delphi 5. Jeżeli nie masz takiej wersji Delphi - napisz do mnie, a ja prześle Ci wersje skompilowaną.
Gdy już znasz kod takiego symbolu do RichEdit wpisz:
RichEdit.SelText := #169 // np. taki numer....


--------------------------------------------------------------------------------


3. Jak wycinać, wklejać tekst do schowka?
Możesz użyć funkcji:
Memo1.CopyToClipBoard; // Kopiowanie...
Memo1.CutToClipboard; // Wycinanie...
Memo1.PasteFromClipboard; // Wklejanie...



--------------------------------------------------------------------------------


4. Jak wczytać bitmapę z rozszerzeniem *.dat?
Nie możesz do tego celu użyć komponentu Image gdyż podczas wczytywania zasygnalizuje błąd. Zmieniasz więc rozszerzenie obrazka, a programie piszesz:
var
B : TBitmap;
begin
B := TBitmap.Create;
B.LoadFromFile('C:\Bitmap.dat'); // wczytanie...
Canvas.Draw(10, 10, Bitmap); // w punkcie 10, 10 zostaje wczytaan
B.Free;
end;



--------------------------------------------------------------------------------

5. Jak skonwertować zmienną String na PChar i odwrotnie?
Zmienną PChar na String zmiania funkcja: StrPas, a String na PChar zmienia funkcja StrPCopy.



--------------------------------------------------------------------------------

6. Jak zapisać wartość do rejestru?
Aby wykorzystywać funkcje zapisywania wartości do rejestru należy do listy uses dopisać słowo: Registry.
Proszę zapoznać się z artykułem "Rejestry" w dziale "Delphi". Tam dokładne omówienie tego zagadnienia.



--------------------------------------------------------------------------------


7. Jak skopiować plik?
Poniższy kod nie dość, że kopiuje plik to daje do wyboru jaki plik skopiować i gdzie. Wskaźnik postępu pokazywany jest na komponencie Gauge.

procedure TForm1.Button1Click(Sender: TObject);
var
Src : File;
FSize,i: Integer;
F : Pchar;
begin
if OpenDialog.Execute then //Wybranie pliku...
AssignFile(Src, OpenDialog.FileName);
SaveDialog.FileName := OpenDialog.FileName;
Reset(Src ,1);
FSize := FileSize(Src); //Pobranie rozmiaru...
Label1.Caption := IntToStr(FSize) + ' bajtów';
{ Wyswietlenie na etykiecie rozmiaru pliku }

Sleep(1000);
try
if SaveDialog.Execute then //Gdzie zapisać...

Application.ProcessMessages;

F := PChar(OpenDialog.FileName);

CopyFile(F, PChar(SaveDialog.FileName), True);
for i:=0 to 100 do
begin

Application.ProcessMessages;
Sleep(Trunc(FSize / 1024)); //Czekaj...

Progress.Progress := I; //Pokazuje wskaźnika postępu

end;
finally
ShowMessage('Kopiowanie zakończone!');

end;
end;



--------------------------------------------------------------------------------


8. Jak ściągnąć plik z Internetu?
Przede wszytkim należy do listy modułów uses dodać słowo: URLMon.

if URLDownloadToFile(nil,'adres z stroną', 'c:\plik.htm',0, nil) <> 0 then
ShowMessage('Błąd podczas ściągania pliku');



--------------------------------------------------------------------------------

9. W jaki sposób wysłać pocztę lub otworzyć stronę Internetową?
Należy zastosować funkcje ShellExecute. Do listy modułów musisz dodać słowo SHELLAPI.

ShellExecute(Handle, 'open', 'strona ', nil, nil, SW_SHOWMAXIMIZED);

Przy okazji tego pytania omówię także konstrukcje funkcji ShellExecute. Pierwszy parametr to uchwyt okna (co to jest? Patrz: WinAPI FAQ ) Kolejny parametr to znak, że chcesz skorzystać z funkcji open, następnie podajesz ścieżkę programu, adres strony, lub adres e-mail. Ostatnim parametrem jest sposób wyświetlenia okna:
Domyślne: SW_SHOWNORMAL;
Zmaksymilizowane: SW_SHOWMAXIMIZED;
Zminimalizowane: SW_SHOWMINIMIZED;
Ukryte: SW_HIDE;



--------------------------------------------------------------------------------


10. Jak wstawić do RichEdit datę lub godzinę?
Po pierwsze, aby wstawić datę lub godzinę do RichEdit musisz datę skonwertować. Robi to funkcja DateToStr, TimeToStr. Ogólna postać:

RichEdit1.SelText := DateToStr(Date);
RichEdit1.SelText := TimeToStr(Time);

Powyższy kod może nie działać w starych wersjach Delphi gdyż nie są przystosowane do daty 2000 i pokazują date: 99-12-30 Smile



--------------------------------------------------------------------------------


11. Jak stworzyć komponent podczas działania programu?
Oto kodzik:

var
Button : TButton;
begin
Button := TButton.Create(Self);
Button.Parent := Self; // Przypisanie rodzica
Button.Caption := 'Przycisk 1';
Button.Left := 100;
Button.Top := 100;
end;



--------------------------------------------------------------------------------


12. Jak zamknąć, zresetować, wylogować się z systemu?
Win32Check(ExitWindows(0, 0));
// Zaloguj się jako nowy użytkownik

Win32Check(ExitWindowsEx(EWX_REBOOT, 0));
//Uruchom ponownie komputer

Win32Check(ExitWindowsEx(EWX_SHUTDOWN, 0));
// Wyłącz komputer



--------------------------------------------------------------------------------

13. Jak ustawić kursor w podanym przeze mnie miejscu?
To tego służy funkcja SetCursorPos(10, 10);
W tym przypadku ustawi kursor myszy w punkcie 10, 10.



--------------------------------------------------------------------------------


14. W Delphi 4 nie mam polskich liter, co zrobić?
Uruchom rejestr Windows i stwórz nową wartość typu DWORD:


HKEY_CURRENT_USER\Software\Borland\Delphi\4.0\
Editor\Options\NoCtrlAltKeys

Z wartością na "1".


--------------------------------------------------------------------------------


15. Jak stworzyć animację przesuwającego się napisu?
Poczytaj artykuł o animacjach w dziale "Delphi".



--------------------------------------------------------------------------------

16. Jak utworzyć, usunąć katalog?
Funkcja MkDir('Nazwa katlogu') tworzy katalog, a funkcja RmDir('Nazwa katalogu') go usuwa.



--------------------------------------------------------------------------------


17. Co to jest biblioteka DLL?
Jeżeli chcesz się dowiedzieć co to jest biblioteka DLL i jak się ją tworzy poczytaj artykuł na ich temat.



--------------------------------------------------------------------------------


18. Jak wykryć czy w komputerze jest zainstalowana karta muzyczna?
Po pierwsze musisz dodać do listy uses nazwę modułu MMSystem.
Należy użyć funkcji WaveOutGetNumDevs

if WaveOutGetNumDevs > 0 then
Label1.Caption := 'Jest karta dźwiękowa!'
else
Label1.Caption := 'Brak karty dźwiękowej!';



--------------------------------------------------------------------------------


19. Jak sprawdzić jaka jest pojemność dysku i ile jest wolnego miejsca?To podawania wolnej ilości na dysku służy funkcja DiskFree, a do podawania całego rozmiaru służy DiskSize.

begin
Label1.Caption := Format('Wolne miejsce: %d',[DiskFree(0)]);
Label2.Caption := Format('Całe miejsce: %d', [DiskSize(0)]);
end;



--------------------------------------------------------------------------------


20. Jak odczytać ścieżkę katalogu Windows i System
Do uzyskiwania takiej informacji służą funkcje GetWindowsDirectory i GetSystemDirectory.

var
WDir : array[0..255] of char;
begin
GetSystemDirectory(WDir, SizeOf(WDir));
Label1.Caption := WDir;

Żeby uzyskać ścieżkę katalogu System należy po prostu zamiast GetWindowsDirectory podstawić GetSystemDirectory.



--------------------------------------------------------------------------------


21. Jak dopisać do pliku kilka linii.
var
TF : TextFile;
begin
AssignFile(TF, 'Nazwa pliku.txt');
Append(TF);
Writeln(TF, 'Moja strona w Internecie:');
Writeln(TF, 'moja strona');
CloseFile(TF);
end;



--------------------------------------------------------------------------------

22. Jak zmienić tapetę pulpitu?
var
S : String;
begin
S := 'zdjecie.bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER,0, PChar(s),
SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);



--------------------------------------------------------------------------------

23. W jaki sposób regulować dzwięk?
To tego celu służy funkcja WaveOutSetVolume. Wartość dzwięku jest warością Integer. Poniższa linia ustawia dzwięk na wartości maksymalnej:

WaveOutSetVolume(0, $FFFFFFFF);

poniższa linia ustawia dzwięk na cichszy:

WaveOutSetVolume(0, $20002000);

Konstrukcja jest dość prosta. Po znaku $ ustawiana jest głośność prawego i lewego głośnika. W powyższych przypadkach na obu głośnikach wartość jest taka sama. Aha, jeżeli chcesz korzystać z tej funkcji musisz dodać do listy uses słowo MMSystem.



--------------------------------------------------------------------------------

24. Czy jest jakiś inny sposób odgrywania dźwięku niż poprzez komponent MediaPlayer?
Tak, musisz skorzystać z modułu MMSystem. Następnie skorzystaj z funkcji PlaySound:

PlaySound('Dzwiek.wav', 0, SND_FILENAME);

Więcej o dźwiękach poczytaj sobie w dziale "Delphi".



--------------------------------------------------------------------------------


25. U mnie wszystko gra, ale gdy uruchamiam program u kolegi pokazuje mi się błąd: "Cannot find file vcl50.bpl". O co chodzi?Jest to wina kompilacji. Musisz skompilować program wraz z plikiem vcl50.bpl, czyli plikiem pakietu. Jeżeli Twój kumpel nie posiada Delphi, nie posiada także tego pliku. Możesz dołączyć ten plik do programu, albo skompilować program wraz z tym plikiem. Wtedy program znacznie "zgrubieje", ale jest to konieczne. Aby to zrobić musisz otworzyć menu "project" wybrać "Options" i odznaczyć opcję "Bulid with runtime packages".



--------------------------------------------------------------------------------


26. Jak po najechaniu kursorem na Image zmienił się obrazek, a po wyjściu z obszaru obrazek powrócił do poprzedniego?
Ściągnij sobie komponent, który działa tak jak Image z tym, że potrafi kontrolować wejście myszki w obszar komponentu. Ściągnij go tutaj.
Jeżeli nie wiesz jak go zainstalować poczytaj to.


--------------------------------------------------------------------------------

27. Jak skonwertować obrazek z *.bmp na *.jpg?
Począwszy od Delphi 3 znajduje się moduł jpeg. To właśnie dzięki niemu można dokonać konwersji. Wystarczy, że zrobisz coś takiego:

var
Bitmap : TBitmap;
JPG : TJPEGImage;
begin
try
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('C:\plik.bmp');
JPG := TJPEGImage.Create;
JPG.Assign(B);
JPG.SaveToFile('C:\plik.jpg');
finally
B.Free;
JPG.Free;
end;
end;



--------------------------------------------------------------------------------


28. Jak umieścić w ComboBox listę wszystkich zainstalowanych czcionek?Wystarczy tylko jedna linia kodu:

ComboBox1.Items := Screen.Fonts;



--------------------------------------------------------------------------------

29. Jak wysunąć szufladkę CD-ROM-u.
Należy skorzystać z modułu MMSystem. Oto kod:

mciSendString('Set cdaudio door open wait',nil,0,handle); //wysuń
mciSendString('Set cdaudio door closed wait',nil,0,handle); //wsuń



--------------------------------------------------------------------------------

30. Jak skopiować plik, aby jego postęp był pokazywany na ProgressBar?Można skorzystać z poniższego kodu: ProgressBar jest pod nazwą CopyB.

procedure TMainFrm.BtnInstallClick(Sender: TObject);
var
FSize : Integer; //Rozmiar pliku
Src : File; //Nazwa programu do skopiowania
I : Integer;
begin

try
AssignFile(Src, 'NazwaPlik.exe');// Nazwa
Reset(Src, 1);// Otwórz...
FSize := FileSize(Src);// Pobierz rozmiar

try
while not Done do
begin
for I:=0 to 100 do
begin
Application.ProcessMessages;
Sleep(Trunc(FSize / 10000));
CopyFile(PChar(InstallProgram), PChar('C:\Nazwa.exe'), True);//Kopiuj
Application.ProcessMessages;
CopyB.Progress := I;//Pokaz na wskazniku
if I = 100 thne //Jeżeli koniec to Done na True
Done := True;
if (Done) then //Jeżeli Done n True to przerwij
Break;
end;
end;
except
raise Excepion.Create(
'Błąd podczas kopiowania!');
end;
finally
CloseFile(Src);
end;



--------------------------------------------------------------------------------

31. Jak zrobić, aby forma lub komponent miały inny kształt?
Poniższa linia robi z formy elipsę. Jeżeli chcesz zmienić kształt innego komponentu to zamiast Handle podajesz np. Button1.Handle

SetWindowRgn(Handle,CreateEllipticRgn(0, 0, Width, Height), True);



--------------------------------------------------------------------------------

32. Jak ukryć kursor myszy?
ShowCursor(False);
ShowCursor(True);



--------------------------------------------------------------------------------

33. Co zrobić, aby pliki graficzne były w jednym EXE, a nie w osobnych plikach?
Musisz skorzystać z edytora zasobów dostarczanego wraz z Delphi. Jeżeli nie wiesz jak to zrobić poczytaj artykuł o tym w dziale Delphi.



--------------------------------------------------------------------------------

34. Jak załadować z zasobów kursor?
Gdy już masz przygotowany kursor w edytorze zasobów robisz np. coś takiego:

{$R NAZWAZASOBU.RES}
const
crMojKursor = 1; //Numer musi być większy od zera.
begin
Screen.Cursors[crMojKursor] :=
LoadCursor(hInstance,'MOJKURSOR');
Form1.Cursor := crMojKursor;

Następuje tutaj załadowanie kursora z zasobów. Na samym początku deklarowana jest nazwa zasobu, a później stała z nazwą kursora. Więcej o zasobach możesz poczytać sobie w dziale Delphi.



--------------------------------------------------------------------------------

35. Jak wydrukować dokument przy pomocy np. Worda?
Musisz podać nazwę pliku z rozszerzeniem *.doc. Aby wydrukować taki dokument skorzystaj z modułu SHELLAPI;

uses ShellAPI;

begin
ShellExecute(Handle,'print','C:\Dokument.doc',nil, nil, SW_HIDE);

Dzięki zastosowaniu znacznika SW_HIDE okno Worda się nie pokaże, a dokument zostanie wydrukowany. Tak samo możesz wydrukować dokument używając Notatnika.



--------------------------------------------------------------------------------

36. Jak pobrać ikony programów?
Należy skorzystać z modułu SHELLAPI oraz funkcji ExtractIcon

uses ShellApi;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.Icon.Handle:=
ExtractIcon(Hinstance,'c:\Program.exe',32);
end;



--------------------------------------------------------------------------------

37. Jak ukryć program z paska zadań?
Pasek musi być ukryty zanim stworzone zostaną formy. Poniższy kod należy więc dodać do źródła projektu ( Project | View Source ). Tak powinna wyglądać całość:

program Project1;

uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var
Ex : Integer;

begin
Application.Initialize;

Ex:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,
Ex or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Program jest ukrywany z paska zadań dzięki parametrowi WS_EX_TOOL_WINDOW.



--------------------------------------------------------------------------------

38. Jak zablokować ponowne uruchomienie programu?

var
hM : HDC;
begin
hM:=CreateFileMapping(THANDLE($FFFFFFFF),nil,
PAGE_READONLY,0,32,'ApplicationTestMap');

if GetLastError=ERROR_ALREADY_EXISTS then
begin
ShowMessage('Nie można uruchomić tego samego programu');
Application.Terminate;
CloseHandle(hM);
end;



--------------------------------------------------------------------------------

39. Jak ograniczyć położenie kursora myszki?
Służy do tego funkcja ClipCursor. A całość może wyglądać np. tak:

var
R : TRect;
begin
with R do
begin
Top := 20;
Bottom := 20;
Left := 20;
Right := 20;
end;
ClipCursor(@R);
end;



--------------------------------------------------------------------------------

40. Jak korzystać z plików INI?
W dziale Delphi znajdziesz artykuł dotyczący plików INI, zapisywanie odczyta itp.



--------------------------------------------------------------------------------

41. Jak sprawdzić czy dany plik istnieje?
Służy do tego funkcja FileExists. Np:

if FileExists('C:\Moj.txt') then
ShowMessage('Plik isnieje!')
else
ShowMessage('Plik nie istnieje!');



--------------------------------------------------------------------------------

42. Jak przenieś skasować, zmienić nazwę katalogu?
Najlepiej jest skorzystać z modułu SHELLAPI. Oto przykład:

uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var R : TSHFileOpStructA;
begin
with R do
begin
Wnd:=Handle; // oznaczenie uchwytu
wFunc:=FO_COPY;// opcja
pFrom:='c:\moj'; // z katalogu
pTo:='c:\dokumenty\moj';// do katalogu...
fFlags:=FOF_NOCONFIRMMKDIR;
end;
if SHFileOperation(R)<>0 then
ShowMessage('Błąd podczas kopiowania')
end;

Zamiast parametru FO_COPY możesz użyć:

FO_DELETE - kasuje wFrom
FO_RENAME - zmienia nazwę z wFrom do w wTo
FO_MOVE - przenosi z wFrom do wTo

--------------------------------------------------------------------------------

43. Jak zminimalizować, przywrócić, ukryć okno?
Służy do tego funkcja ShowWindow. Pierwszym parametrem jest uchwyt okna, a drugim stan okna. Może on być:

SW_HIDE - ukrywa okno.
SW_MAXIMIZE - maksymalizuje okno.
SW_MINIMIZE - minimalizuje.
SW_SHOw - pokazuje.
Np. ShowWindow(Handle, SW_SHOW);


--------------------------------------------------------------------------------


44. Jak utworzyć skrót do programu na pulpicie lub w menu start?
To nie zadziała w wypadku Delphi 2. W tym wypadku tworzony jest skrót do programu Notepad.


uses ShlObj, ActiveX, ComObj, Registry;

procedure TForm1.Button1Click(Sender: TObject);
var MyObject:IUnknown;
MySLink:IShellLink;
MyPFile:IPersistFile;
FileName:String;
Directory:String;
WFileName:WideString;
MyReg:TRegIniFile;
begin
MyObject:=CreateComObject(CLSID_ShellLink);
MySLink:=MyObject as IShellLink;
MyPFile:=MyObject as IPersistFile;
FileName:='C:\Windows\NOTEPAD.EXE';
with MySLink do
begin
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
end;

MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\'+

'CurrentVersion\Explorer');

// Poniższe dodaje skrót do desktopu
Directory := MyReg.ReadString('Shell Folders','Desktop','');

// A to do menu Start
Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
'\Microspace';

CreateDir(Directory);

WFileName := Directory+'\Notatnik.lnk';
MyPFile.Save(PWChar(WFileName),False);
MyReg.Free;
end;



--------------------------------------------------------------------------------

45. Jak zmierzyć szerokość i wysokość tekstu w pikselach?
Służą do tego funkcje:
Canvas.TextWidth, Canvas.TextHeight;

Canvas.TextWidth('Programowanie');



--------------------------------------------------------------------------------

46. Jak odczytać numer seryjny dysku lub dyskietki?


var
Bufor:array[0..MAX_PATH] of Char;
MaxCompLength, FileSystemFlags : Integer;
Drive:Char;
Serial:DWORD;
begin
Drive:='A';
GetVolumeInformation(PChar(Drive + ':\'),Bufor,SizeOf(Bufor),
@Serial,MaxCompLength,FileSystemFlags,nil,0);
end;

Zmienna "Serial" posiada numer seryjny dyskietki, a "Bufor" etykietę.
W przypadku dysku podaje numer partycji.



--------------------------------------------------------------------------------

47. Jak pobrać uchwyt ( Handle ) dowolnego okna?
Służy do tego funkcja "FindWindow". Żeby pobrać uchwyt należy znać właściwość "Caption" lub "ClassName". Jeżeli nie znamy, któregoś z tych elementów wstawiamy nil. Przykład pobrania uchwytu Inspektora Obiektów.

var
H : THandle;
begin
FindWindow(nil,'Object Inspector');



--------------------------------------------------------------------------------

48. Jak zmienić tekst dowolnego okna?
Musisz znać uchwyt okna. (patrz: przykład powyżej).

SetWindowText(Handle, 'Nowa nazwa okna');



--------------------------------------------------------------------------------

49. Jak wydrukować stronę testową drukarki?
Należy odwołać się do biblioteki rundll.dll i skorzystać z modułu ShellAPI.

uses ShellAPI;

ShellExecute(Handle, 'open',
'rundll32','msprint2.dll, RUNDLL_PrintTestPage',nil,
SW_SHOWNORMAL);



--------------------------------------------------------------------------------

50. Jak skonwertować zmienną Integer na PChar i odwrotnie?Chyba najprościej będzie użyć funkcji Ord i Chr:

// Char na Integer
ShowMessage(IntToStr(Ord('C'))); // kod ASCII litery Char


// i odwrotnie...
ShowMessage(Chr(25)); // znak odpowiadający cyfrze 25



--------------------------------------------------------------------------------

51. Jak w Edicie wyświetlić datę, tak, żeby dwukropek był zawsze na tym samym miejscu?
Do tego celu najlepiej jest użyć komponentu "MaskEdit" ( paleta: Additional ).
Wybierasz właściwość "EditMask" - pojawia się okno do wyboru maski, a następnie klikasz na przycisku "Mask" i w oknie wybierasz plik "us.dem". Po prawej stronie pojawiła się lista masek. Wybierz z niej "Short Time" i OK! Gotowe.



--------------------------------------------------------------------------------

52. Jak nie korzystając z komponentu dokleić do pliku program EXE?
Jest to średnio trudne. Postępuj według poniższych wskazówek:
Naszym celem będzie dodanie do zasobów Windows. Ponieważ standardowy edytor zasobów nie umożliwia tego musimy to zrobić ręcznie. Do jednego katalogu skopiuj Twój plik EXE oraz program "brcc32.exe", który jest częściom Delphi [ znajduje się w katalogu ...\Delphi\Bin ].
Teraz stwórz plik z rozszerzeniem *.rc, a następnie uruchom go w Notatniku. Wpisz taki tekst:

PROGRAM RCDATA "Program.exe"

Program.exe to oczywiście nazwa Twojego programu, który chcesz włączyć do EXEca. Ok, teraz zapisz ten plik.
Musisz użyć programu brcc32.exe, aby skompilować zasób. W tym celu uruchom okienko MS - DOS'a i przejdź do katalogu w którym skopiowałeś program brcc32.exe. W MS - DOS'ie do katalogu przechodzi się poleceniem:

cd NazwaKatalogu

a przejście do katalogu wyżej powoduje polecenie:

cd..

Gdy już jesteś w tym katalogu wpisz:

brcc32.exe PlikRC.rc

"PlikRC.rc" to plik, który przed chwilą edytowałeś. Jeżeli wszystko pójdzie dobrze w katalogu powinieneś ujrzeć plik z rozszerzeniem *.res, który zawiera Twój program! Moje gratulacje - właśnie dołączyłeś program do zasobów.
Teraz w programie należy w którymś miejscu dopisać linię:

{$R PLIKRC.RES}

Teraz w którejś procedurze wpisz:

var
Res : TResourceStream;
begin
Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
Res.SaveToFile('Program.exe'); // zapisz na dysk
Res.Free;
end;
Jeżeli postępowałeś wg. powyższych wskazówek powinno się udać. Po kompilacji w jednym EXEcu powinien znaleźć się Twój doklejony program.



--------------------------------------------------------------------------------

53. Jak wywołać migotanie programu na pasku zadań?
Normalnie jeżeli chesz, aby na pasku zadań nazwa Twojego programu się "zapaliła" to piszesz coś takiego:

FlashWindow(Application.Handle,True);

Jeżeli chcesz, aby program przestał być zaznaczony to zamiast "True" piszesz "False". Teraz jeżeli chcesz, aby nazwa raz się zapalała, a raz "gaisła" to musisz na formie postawić komponent Timer. Zmien "Enabled" na False. W procedurze "OnTimer" tegoż komponentu piszesz:

var
Miganie : Boolean;
begin
Miganie := not Miganie;
FlashWindow(Application.Handle, Miganie);
Teraz żeby uruchomić zegar musisz napisać:

Timer1.Enabled := True;



--------------------------------------------------------------------------------

54. Jak przechwycić uruchamianie wygaszacza ekranu?
W sekcji "private" umieść taką linię kodu:

procedure WMSYSCommand(var M: TMessage); message WM_SYSCOMMAND;

W sekcji "Implementation" natomiast:

procedure TForm1.WMSYSCommand(var M: TMessage);
begin
if M.WParam <> SC_SCREENSAVE then inherited
else ShowMessage('Uruchamianie wygaszacza...');
end;


--------------------------------------------------------------------------------

55. Jak rysować po komponencie.


var
C:TCanvas;
begin
C:=TCanvas.Create;
C.Handle:=GetDC(Button1.Handle); // na Buttonie
{Tu możesz rysować jak po zwykłym Canviasie}
C.Free;


--------------------------------------------------------------------------------

56. Jak mogę rysować po pasku tytułowym formy?
Jest to dość trudnę gdyż rysować możesz za pomocą funkcji API:
1. W sekcji "Interface" dodaj linię:
var
DC : Integer;
2. W OnCreate formy wpisz:
DC := GetWindowDC(handle);
3. Teraz w procedurze wpisz:

var
Text : PChar;
begin
Text := 'Adam Boduch';
TextOut(DC, 3, 4, Text, StrLen(Text));
Funkcja "TextOut" to funkcja API. Najpierw mamy uchwyt do paska, później pozycja wyświetlanego tekstu, tekst i w końcu określenie długości tekstu ( StrLen ).



--------------------------------------------------------------------------------

57. Jak zrobić, aby na formie był wyświetlany zegarek?
Na formie umieszczasz komponent "Timer" i w procedurze "OnTimer" wpisujesz:

Canvas.Brush.Style := bsClear; // przeźroczyste tło
Refresh; // odśwież
Canvas.TextOut(20, 20, TimeToStr(Time)); {
wyświetl w punkcie 20, 20 }


--------------------------------------------------------------------------------

58. Jak zmienić datę w systemie?


var
Data:Systemtime;
begin
Data.wMonth:= 12;
Data.wDay:=22;
Data.wYear:=1995;
SetLocalTime(Data);


--------------------------------------------------------------------------------

59. Jak usunąć ( odinstalować ) aplikację?
W przykładzie, który za chwilę podam nasza aplikacja usuie samego siebie. Tak. W tym celu stworzony zostanie program ( ! ) ktory usunie pliki naszego programu. Program zostanie stworzony w katalogu Windows\Temp, gdyż ten katalogu jest często oprózniany, a nasz program zajmował będzie tylko 18 bajtów! Tak, to będzie program dosowy z rozszerzeniem *.bat. A więc oto kod:

var
TF: TextFile;
begin
PostMessage(Handle, wm_Quit, 0, 0); // zamkniecie naszej aplikacji

AssignFile(TF, 'C:\Windows\Temp\kill.bat'); // zapisz plik
Rewrite(TF);
Writeln(TF, ':kill');
Writeln(TF, 'cd ' + ParamStr(0));
Writeln(TF, 'del ' + ExtractFileName(ParamStr(0)));
Writeln(TF, 'if exist ' +
ExtractFileName(ParamStr(0))+ ' goto kill');
CloseFile(TF);

// uruchom program
WinExec('C:\Windows\Temp\kill.bat', sw_Hide);


--------------------------------------------------------------------------------

60. Co zrobić by menu "Help" było po prawej stronie, a reszta po lewej.
Zakładając, że "MainMenu" to komponent "TMainMenu", a "Pomoc1" to menu z pomocą można zrobić tak w procedurze "OnCreate" formy:

procedure TForm1.FormCreate(Sender: TObject);
var
Info: TMenuItemInfo;
Buff: array[0..MAX_PATH] of Char;
begin
Info.cbSize := SizeOf(TMenuItemInfo);
Info.fMask := MIIM_TYPE;
Info.dwTypeData := Buff;
Info.cch := SizeOf(Buff);
GetMenuItemInfo(MainMenu1.Handle, Pomoc1.Command, False, Info);
Info.fType := Info.fType or MFT_RIGHTJUSTIFY;
SetMenuItemInfo(MainMenu1.Handle, Pomoc1.Command, False, Info);
end;


Post został pochwalony 0 razy
...
Zobacz profil autora
Powrót do góry
Napisz nowy temat   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ..::Tibia Hack Team::.. Strona Główna » Delphi
Wyświetl posty z ostatnich:   
 
 
Wszystkie czasy w strefie EET (Europa)
Skocz do:  

Strona 1 z 1


Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group

Theme created OMI of Kyomii Designs for BRIX-CENTRAL.tk.