Hacking  
  Listopad 19 2017 16:53:45  
 
Nawigacja
folder Portal
. Artykuły
. Download
. Forum
. Szukaj
. FAQ
. Regulamin
folder Hacking
. Gry Hakerskie
. Filmy
folder Delphi
. Kursy
. Faq
. Źródła
. Komponenty
. Artykuły
folderWebmaster
. JavaScripts
. Skrypty PHP
folderRóżne
. Kontakt
. Zlokalizuj ip
Aktualnie online
. Gości online: 4

. Użytkowników online: 0

. Łącznie użytkowników: 153,889
. Najnowszy użytkownik: Gawrsd3f
Ostatnie artykuły
. Metoda ataku symlin...
. Asembler x86 w pigułce
. Binder plików z komp...
. [Asembler/MASM] Pobi...
. Braifuck 4 fun
faq2 z 2001r z 4p
Delphi FAQ 2

 


1. Jak podczas pracy programu dodać nową pozycje do PopupMenu?
2. Jak dodać ikonę programu do Tray'a. ( ikonka obok zegara Windows ).

3. Jak sprawić, aby dymki z podpowiedziami nie znikały. 
4. Jak rozpoznać w jakim systemie operacyjnym działa program?
5. Jak sprawdzić jaki typ danych jest w schowku? 

6. Jak zapisać, odczytać wartość binarną z rejestru? 

7. Jak zrobić, aby w ListBox każda czcionka była w osobnym kroju ( tak jak w Wordzie 2000) ?

8. Jak ustawić jakiś komponent aktywnym podczas pracy programu?
9. Jak pobrać współrzędne myszy?  
10. Jak pobrać ikonę dowolnego programu? 

11. Jak odczytać nazwę zalogowanego użytkownika? 
12. Jak pobrać nazwę komputera? 
13. Jak rozpoznać typ klawiatury? 
14. Jak rysować po pulpicie? 
15. Co zrobić, aby lewy przycisk działał tak jak prawy i odwrotnie? 

16. W jaki sposób zmienić szybkość dwukrotnego kliknięcia myszą? 

17. Jak ukryć kursor klawiatury? 
18. Jak ukryć lub pokazać kursor myszy? 
19. Jak mogę usunąć katalog, w którym są pliki?

20. Jak cofnąć ostatnią operacje w komponencie Memo?

21. Jak sprawdzić jaki typ danych znajduje się w schowku? 
22. Jak odegrać muzykę o formacie mp3?
23. Jak ukryć jakiś plik ( atrybut: Ukryty ).

24. Jak wysłać pocztę tak, aby w treści była zawartość komponentu Memo?

25. Jak stworzyć komponent dynamicznie? 
26. Jak po umieszczeniu "Labela" na "Image'u" sprawić, aby tło etykiety były przeĽroczysty? 
27. Jak sprawdzić pisownie w RichEdit przy pomocy słownika Worda?
28. Jak zrobić program bez formularza?

29. Jak sprawdzić ostatni znak np. w Edit?

30. Jak wykonać procedurę po naciśnięciu klawisza ENTER? 

31. Jak wczytać z pliku tekstowego tekst z dwóch kolumn do 2-óch komponentów
ComboBox?

32. Jak wysłać pocztę?

33. Jak sprawdzić czy klawisze Num Lock, Caps Lock, Scroll Lock, Insert są włączone?

34. Jak odczytać numer seryjny dysku?

35. Jak odświeżyć listę folderów "DirectoryListBox"? Refresh nie działa. 

36. Jak odczytać numer kolumny i wiersza w RichEdit?

37. Jak wykryć moment zamykania Windows? 

38. Jak uzyskać systemowe ikonki? 

39. Nie działa "StayOnTop". Co robić?

40. Jak "przechwycić" zaznaczony tekst w RichEdit?

41. Jak do zasobów "wrzucić" plik muzyczny *.wav?

42. Jak znaleĽć tekst w RichEdit?
 
43. Jak ustawić wygaszacz ekranu na brak? 

44. W jaki sposób ustawić głośność dla CD?

45. Jak zmienić położenie i rozmiar dowolnego okna?

46. Jak zmaksymilizowac, zminimalizować dowolne okno?

47. Jak zawiesić działanie myszki?

48. Jak sprawdzić, czy uchwyt jest przypisany do widocznego okna?

49. Jak odwołać się jednocześnie do wszystkich komponentów np. typu "TLabel"?

50. Jak wyświetlić ikonę skojarzoną z danym rozszerzeniem? 

51. Jak regulować dĽwięk przy pomocy "ScrollBar'a"? 

52. Jak zaokrąglić wynik do dwóch miejsc po przecinku?

53. Jak zrobić zrzut z ekranu?

54. Jak wyłączyć skróty w Windows? ( Ctrl + Del + Alt ).

55. Jak skojarzyć moją aplikację z rozszerzeniem danego typu?

56. Jak sformatować datę do postaci: 25 stycznia 2001 np?

57. Jak ukryć lub pokazać pasek stanu?

58. Jak zamknąć inną aplikację znając jej ścieżkę? 

59. Jak zarejestrować skrót klawiaturowy dla całego systemu? 

60. Jak sprawdzić ile miejsca na dysku zajmuje plik?

61. Jak wyświetlić okno z prośbą o podanie hasła? 
62. Jak zaszyfrować jakiś plik tekstowy?
63. Jak narysować tekst w pionie? 

64. Jak dostosować program, aby wyglądał tak samo w różnych rozdzielczościach?
65. Jak zmienić rozdzielczość? 
66. Jak przejść w stan oczekiwania?

67. Jak usunąć moją aplikację z listy znajdującej się po naciśnięciu klawiszy: Ctrl + Alt + Del?

68. Jak uzyskać informację o katalogu Windows\Temp?

69. Jak odświeżyć widok pulpitu?

70. Jak wyświetlić Windowsowe białe okno informacją o błędzie?

71. Jak odczytać rozdzielczość ekrnau?

72. Nie mogę w Delphi2 otworzyć programu, który został napisany w Delphi5, co robić?

73. Jak sprawdzić, czy użytkownik jest w Internecie? 
74. Co zrobić, aby film wyświetlał się np. na komponencie Panel?

75. Jak odczytać numer linii w komponencie Memo?

76. Jak przewijać zawartość Memo poprzez naciskanie przycisku? 

77. Jak przesuwać formę jeżeli BorderStyle = bsNone?

78. Jak odczytać położenia kursora w Memo lub RichEdit?

79. Co zrobić, aby każdą linię RichEdit'a zapisać w osobnej zmiennej?

80. Jak po upływie 30 sek. zamknąć program?

81. Jak uzyskać listę plików ( EXE) uruchomionych w systemie?

82. Jak pozmieniać znaki w określonym miejscu pliku?

83. Jak wykonać jakąś operacje o danej godzinie?

84. Jak usunąć plik do kosza?

85. Jak rysować po ListBox'ie? 

86. Jak dodać pozycję do menu jeżeli kliknie się na ikonę aplikacji na pasku zadań?

87. Jak zrobić w RichEdit indeks dolny lub górny? ( tak jak w Wordzie ).

88. W jaki sposób sprawdzić jaką literą oznaczony jest napęd CD-ROM?

89. Jak włączyć lub wyłączyć diody klawiszy NumLock, CapsLock?

90. Jak zapisać zawartość schowka do pliku, i zawartość pliku do schowka?

91. Jak wykryć połączenie z netem?

92. Do czego służą funkcje Round i Trunc?

93. Jak skasować wszystkie pliki z katalogu wyjątkiem np. a.txt oraz a.dat

94. W jaki sposób sprawdzić ile miejsca zajmują wszystkie pliki w danym katalogu?

95. Jak odczytać tag z pliku mp3?

96. Jak wywołać okno połączenia Internetowego?

97. W jaki sposób zaznaczyć wybrany element w ListView?

98. W jaki sposób uniemożliwić zamknięcie programu?

99. Jak zmienić datę modyfikacji pliku?

100. Jak wydać dzwięk z głośniczka w komputerze?

101. Wyświetlenie okna do regulacji głośności?

102. Jak zrobić aby formularz był przeĽroczysty?

103. Jak załadować obrazek ze schowka do komponentu Image?

104. Odczyt liczby przycisków myszy.

105. Jak uruchomić wygaszacz ekranu?

106. W jaki sposób pokazać okno kopiowania z dyskietki na dyskietkę?

107. Jak ustawić czas, po którym wygaszacz zostanie włączony?
108. Jak wyświetlić na Labelu liczbę zmienno-przecinkową?

109. Jak reagować na naciśnięcie klawiszy strzałek?

110. Jak sprawdzić, czy dyskietka znajduje się w stacji?

111. Brakuje mi pliku DsgnIntf.dcu. Czy mógłbyś mi go przesłać?

112. Jak przerwać działanie pętli?

113. Jak przerwać działanie pętli naciśnięciem klawisza?

114. Jak obliczyć różnicę dat [ilość dni, miesięcy, lat]?

115. Co zrobić, gdy nie chcę aby na pasku zadań wyświetlona była "belka" formy wywołanej z DLL'a?

116. Co zrobić gdy chcę umieścić ikonkę obok pozycji ComboBox?

117. W jaki sposób wygenerować procedurę jeżeli nie działa skrót Ctrl + Shift + C?
118. Jak zrobić program na zasadzie helpa - wyszukuje żądaną pozycję?

1. Jak podczas pracy programu dodać nową pozycje do PopupMenu?
Na przykład tak:

var
  Menu : TMenuItem;
begin
  Menu := TMenuItem.Create(Self);
  Menu.Caption := 'Moja pozycja';
  PopupMenu1.Items.Add(Menu);
end;


2. Jak dodać ikonę programu do Tray'a. ( ikonka obok zegara Windows ).
Oto kod. Aha, dodaj do listy modułów słowo "ShellAPI". 

1. Do sekcji private dodaj takie pozycje:

IconNotifyData : TNotifyIconData;
procedure WndProc(var Msg : TMessage); override;

2. Teraz w OnCreate wpisz taki oto kod:

  with IconNotifyData do 
  begin
    hIcon:=Application.Icon.Handle;
    uCallbackMessage:=WM_USER+1;
    cbSize:=SizeOf(IconNotifyData);
    Wnd:=Handle;
    uID:=100;
    uFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
  end;
  // Kopiujemy tytuł aplikacji jako "dymek"
  StrPCopy(IconNotifyData.szTip, Application.Title);

  // Dodajemy ikonę do traya
  Shell_NotifyIcon(NIM_ADD,@IconNotifyData)
;

Następnie uzupełnij procedure "WndProc" w taki oto sposób:

procedure TMainFrm.WndProc(var Msg : TMessage);
var
  p : TPoint;
begin
{
Ta procedura służy do przechwytywania komunikatów po naciśnięciu przycisku w obrębie ikony.
}
//Jezeli nacisnieto prawym przyciskiem myszy
if (Msg.Msg=WM_USER+1) and (Msg.lParam = WM_RBUTTONDOWN) then
  begin
//Nastepuje pobranie pozycji kursora myszki
  GetCursorPos(p);
//i wyswietlenie menu 
  TrayMenu.Popup(p.x, p.y);
end;
//Jezeli nacisnieto lewy przycisk nastepuje wyswietlenie //formy
  if Msg.LParam = WM_LBUTTONDOWN then
  MainFrm.Show;

 inherited;
end;

Dodatkowo przy zamykaniu programu możesz dopisać linie:

Shell_NotifyIcon(NIM_DELETE, @IconNotifyData);

Usuwa ona ikone z Tray'a.


3. Jak sprawić, aby dymki z podpowiedziami nie znikały.
Należy w OnCreate wpisać:

Application.HintHidePause(1000000); // np.


4. Jak rozpoznać w jakim systemie operacyjnym działa program?
Oto kod:

var 
 OS:TOsVersionInfo;
begin
 OS.dwOSVersionInfoSize:=SizeOf(os);
 GetVersionEx(os);
 case os.dwPlatformId of
  VER_PLATFORM_WIN32s: Caption:='WIN 3.1';
  VER_PLATFORM_WIN32_WINDOWS: Caption:='WIN 95\98';
  VER_PLATFORM_WIN32_NT: Caption:='WIN NT';
 end;
end;

5. Jak sprawdzić jaki typ danych jest w schowku?
Należy skorzystać z modułu Clipbrd; Następnie możesz sprawdzić, czy w schowku jest tekst, bitmapa itp:

var
  B : Tbitmap;
begin
  try
    try
  if Clipboard.HasFormat(CF_TEXT) then
    ShowMessage(
    ClipBoard.AsText);
  if Clipboard.HasFormat(CF_BITMAP) then
    B := Tbitmap.Create;
    B.Assign(ClipBoard);
    B.Width := 120;
    B.Height := 100;
    finally
      B.Free;
    end;
  except
    raise Exception.Create(
    'Ne ma nic w schowku!');
  end;

CF_TEXT - tekst.
CF_BITMAP - bitmapa Windows;
CF_PICTURE - zdjęcie klasy TPicture. 
CF_METAFILEPICT - metaplik;


6. Jak zapisać, odczytać wartość binarną z rejestru?
Zapisywanie odbywa się podobnie jak zapis z tym, że zamiast WriteBinaryData piszesz ReadBinary

var
 Rejestr : TRegistry;
 Zmienna : String;
begin
 Zmienna := 'www.programowanie.of.pl';
 Rejestr:=TRegistry.Create;
 Rejestr.OpenKey('Software\Pad',True);
 Rejestr.WriteBinaryData('Nazwa wartości',Zmienna,SizeOf(Zmienna));
 Rejestr.Free;

Nie zapomnij dodać do listy uses słowo: Registry; 


7. Jak zrobić, aby w ListBox każda czcionka była w osobnym kroju ( tak jak w Wordzie 2000) ?
Jeżeli ktoś ma Worda 2000 to zauważył pewnie, że po rozwinięciu listy czcionek każda napisana jest osobną czcionką :) Jak to zrobić na przykładzie ListBox'a. 

W on Create:

Screen.Fonts := ListBox.Items;

W DrawItem list box'a:

with ListBox1.Canvas do
begin
  FillRect(Rect);
  Font.Name := ListBox1.Items[Index];
  Font.Size := 0; 
  TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
end;

W MeasureItem list box'a:

with ListBox1.Canvas do
begin
  Font.Name := Listbox1.Items[Index];
  Font.Size := 0; 
  Height := TextHeight('!!') ;  
end;

Teraz w Inspektorze Obiektów musisz zmienić właściwość "Style" komponentu "ListBox" na "lbOwnerDrawVariable". 



8. Jak ustawić jakiś komponent aktywnym podczas pracy programu?
Oto kod; służy do tego funkcja SetFocus:

Windows.SetFocus(RichEdit.Handle);



9. Jak pobrać współrzędne myszy? 
Służy do tego funkcja GetCursorPos - np:

var
  P : TPoint;
begin
  GetCursorPos(P);
  ShowMessage(IntToStr(P.X, P.Y));


10. Jak pobrać ikonę dowolnego programu?
Słuzy do tego funkcja "ExrtactIcon". Ikona programu przechowywana jest pod postacią zmiennej typu HIcon. 

var
  H : HIcon;
begin
  H := ExtractIcon(Handle,
  'Nazwa Programu.exe', 0);
  Image.Picture.Icon.Assign(H);



11. Jak odczytać nazwę zalogowanego użytkownika?
var
  User : String;
  Buff : DWORD;
begin
// dlugoosc Nazwiska
  Buff := 12;
  SetLength(User, Buff);
  GetUserName(PChar(User), Buff);
  ShowMessage(User);


12. Jak pobrać nazwę komputera? 
var
  Comp : String;
  Buff : DWORD;
begin
  Buff := 64;
  SetLength(Comp, Buff);
  GetComputerName(PChar(Comp), Buff);
  ShowMessage(Comp);


13. Jak rozpoznać typ klawiatury?
W zależności od wyniku proceury:

1. IBM 83 klawisze.
2. Olivetti ( 102 klawisze ). 
3. IBM PC/AT (83-84 klawisze ).
4. IBM 103 - 104 klawisze. 
5. Nokia 1050
6. Nokia 9140
7. Japońska klawiatura. 

A oto procedura: 

ShowMessage(IntToStr(
GetKeyboardType(0));


14. Jak rysować po pulpicie?
Po pulpicie można rysować jak w zwykłym Canvasie. Wystarczy tylko pobrać uchwyt pulpitu:

Canvas.Handle:=GetWindowDC(GetDesktopWindow);
//tutaj używamy funkcji Canvas'a do rysowania

// rysujemy np. kwadrat
Canvas.Rectangle(20, 20, 220, 220);


15. Co zrobić, aby lewy przycisk działał tak jak prawy i odwrotnie?
Jeżeli jako parametr funkcji SwapMouseButton podasz True to przyciski się zmienią - jeżeli podasz "False" będzie jak dawniej. 

SwapMouseButton(True);


16. W jaki sposób zmienić szybkość dwukrotnego kliknięcia myszą?

SetDoubleCliktime(100);

Domyślnie jest to 500. Żeby pobrać prędkość należy skorzystać z funkcji GetDoubleClickTime. 


17. Jak ukryć kursor klawiatury?

ShowCaret(Handle); // pokaż
HideCaret(Handle); // ukryj


18. Jak ukryć lub pokazać kursor myszy? 

ShowCursor(False); //ukrycie
ShowCursor(True); // pokaż


19. Jak mogę usunąć katalog, w którym są pliki?
Proponuje przeczytanie artykułów o kopiowaniu, usuwaniu plików i folderów w dziale "Delphi".


20. Jak cofnąć ostatnią operacje w komponencie Memo?
Komponent RichEdit posiada procedure "Undo". Nie posiada jej niestety komponent Memo. Z tego powodu należy wysłać odpowiedni komunikat:

SendMessage(Memo.Handle, WM_UNDO, 0, 0);


21. Jak sprawdzić jaki typ danych znajduje się w schowku?
Należy skorzystać z modułu "Clipbrd". Teraz sprawdzenie dokonuje się za pomocą funkcji HasFormat:

Clipboard.HasFormat(CF_TEXT);

  • CF_TEXT - tekst;

  • CF_BITMAP - bitmapa

  • CF_PALETTE - paleta kolorów.

  • CF_METAFILE  - metaplik.


22. Jak odegrać muzykę o formacie mp3?
Należy skorzystać z komponentu mp3 umieszczonego na naszej stronie. [ ¦ciągnij ]  [ Zobacz... ]


23. Jak ukryć jakiś plik ( atrybut: Ukryty ).
W Windowsie można nadawać plikom atrybut "ukryty" dzięki czemu są one niewidoczne. W Delphi także możesz coś takiego zrobić:

SetFileAttributes('C:\Plik.exe', FILE_ATTRIBUTE_HIDDEN);


24. Jak wysłać pocztę tak, aby w treści była zawartość komponentu Memo?

var
  P : PChar;
begin
  P := PChar('mailto:boduch@poland.com?Subject=Temat&Body='+
Memo1.Lines.Text);
ShellExecute(Handle,'open',PChar(P), nil, nil, SW_SHOW);


25. Jak stworzyć komponent dynamicznie?

var
  Button : TButton;
begin
  Button := TButton.Create(Self);
  Button.Parent := Self;
  Button.Caption := 'Klawisz 1';
  Button.Left := 20;
  Button.Top := 20;
end;


26. Jak po umieszczeniu "Labela" na "Image'u" sprawić, aby tło etykiety były przeĽroczysty?
Komponent "Label" ma w Inspektorze Obiektów właściwość "Transparent" po której ustawieniu na "True" tło tegoż komponentu staje się przeĽroczyste. 


27. Jak sprawdzić pisownie w RichEdit przy pomocy słownika Worda?
Potrzebujesz do tego specjalnego komponentu: "Spellmso".


28. Jak zrobić program bez formularza?
Z menu "Project" wybierz "View Source". Teraz możesz już zamknąć formularz i klikając prawym przyciskiem na zakładce modułu wybierz "Close Page". Tym sposobem główny kod programu znajdować się będzie w pliku *.dpr. Na początku powinien on wyglądać tak:

program Project1;

uses
  Forms;

{$R *.RES}

begin
  Application.Initialize;
  Application.Run;
end.

29. Jak sprawdzić ostatni znak np. w Edit?

 if Edit.Text[Length(Edit.Text)] = '\' then
  { Cos tam }


30. Jak wykonać procedurę po naciśnięciu klawisza ENTER?
Załóżmy, że masz komponent Edit i chciałbyś, aby po naciśnięciu klawisza Enter wykonała się jakaś procedura. Taki kod musisz wpisać w procedurze OnKeyPress:

if Key = #13 then
  NazwaProcedury;
  Key := #0;


31. Jak wczytać z pliku tekstowego tekst z dwóch kolumn do 2-óch komponentów ComboBox?

Załóżmy, że masz plik tekstowy z dwiema kolumnami: w jednej wpisane są kraje, a po prawej stolice tych krajów. Teraz chcesz każdą kolumnę wczytać do osobnego komponentu "ComboBox":

var
  F: TextFile;
  Kraj: String[20]; // na każdą kolumnę przeznaczono 20 znaków
  Stolica: String[20];
begin

  AssignFile(F, 'PLIK.TXT');
  Reset(F); // otwarcie pliku
  try
    while not Eof(F) do
    begin
       Readln(F, Kraj, Stolica); // wczytanie 2-óch kolumn
       ComboBox1.Items.Add(Kraj); // dodanie ich do komponentu
       ComboBox2.Items.Add(Stolica);
    end;
  finally
    CloseFile(F);
  end;

32. Jak wysłać pocztę?
Do tego są odpowiednie komponenty w Delphi. Na zakładce "FastNet". Można też użyć komponentów Mail2000 [ dostępne w działe: ¬ródła ].


33. Jak sprawdzić czy klawisze Num Lock, Caps Lock, Scroll Lock, Insert są włączone?
Umieść na formularzu 4 komponenty "CheckBox". W "OnCreate formy wpisz:

CheckBox1.Checked := GetKeyState(VK_CAPITAL) <> 0;// Caps
CheckBox2.Checked := GetKeyState(VK_NUMLOCK) <> 0; // Num lock
CheckBox3.Checked := GetKeyState(VK_SCROLL ) <> 0; // Scroll Lock
CheckBox4.Checked := GetKeyState(VK_INSERT) <> 0; // Insert

34. Jak odczytać numer seryjny dysku?
Funkcja ta podaje tylko numer seryjny partycji lub dyskietki, a nie dysku. 

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


35. Jak odświeżyć listę folderów "DirectoryListBox"? Refresh nie działa.
Rozwiązanie: Zamiast "Refresh" zastosuj "Update". 


36. Jak odczytać numer kolumny i wiersza w RichEdit?
Do listy modułów "uses" dodaj słowo "RichEdit". Teraz możesz stworzyć swoją procedurę: GetCursorPosition i w taki sposób uzupełnić tę procedurę:

procedure TChild.GetCursorPosition;
var
  Pos: TPoint;
begin
  Pos.Y := SendMessage(RichEdit.Handle, EM_EXLINEFROMCHAR, 0,  
   RichEdit.SelStart);
  Pos.X := (RichEdit.SelStart - SendMessage(RichEdit.Handle, 
   EM_LINEINDEX, Pos.Y, 0));

  Inc(Pos.X);
  Inc(Pos.Y);
  ShowMessage(Format(
  'Lnia: %d;  Znak: %d', [P.X, P.Y]));
end;

37. Jak wykryć moment zamykania Windows?
Do sekcji "private" dodaj taką linie:

procedure ClosingWin(var Message: TMessage); message WM_QUERYENDSESSION;

Teraz w sekcji "implemetation" wpisz: 

procedure TForm1.ClosingWin(var Message: TMessage);
begin
  if Message.Msg = WM_QUERYENDSESSION then
    begin
// jakaś akcja
    end;
  DefaultHandler(Message)
end;


38. Jak uzyskać systemowe ikonki?
Można np. w Image umieścić standardowe ikonki Windows. Oto jak tego dokonać:

Image1.Picture.Icon.Handle := LoadIcon(0, IDI_APPLICATION);

Istnieje możliwość zastosowania także tych ikonek:

 IDI_ASTERISK
 IDI_EXCLAMATION
 IDI_HAND
 IDI_QUESTION
 IDI_WINLOGO


39. Nie działa "StayOnTop". Co robić?
Czasami "fsStayOnTop" nie działa. W takim wypadku możesz zrobić coś takiego: 

SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, 0);

40. Jak "przechwycić" zaznaczony tekst w RichEdit?
Właściwość "RichEdit.SelText". Przechowuje informację o zaznaczonym tekście. Jeżeli chcesz np. wyświetlić w okienku zaznaczony tekst to piszesz:

ShowMessage(RichEdit.SelText); 


41. Jak do zasobów "wrzucić" plik muzyczny *.wav?
Standardowy edytor zasobów [ Image Editor ] dostarczany wraz z "Delphi" się do tego nie nadaje. Lepiej ściągnij sobie program "ResHack". Umożliwia on dodanie do programu plików muzycznych. 


42. Jak znaleĽć tekst w RichEdit?
Oto kod:

var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit do
  begin  
    if SelLength <> 0 then
      StartPos := SelStart + SelLength
    else
      StartPos := 0;  

    ToEnd := Length(Text) - StartPos;

    FoundAt := FindText(
    'Tekst', StartPos, ToEnd, [stMatchCase]);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length('Tekst');
    end;
  end;
 end;

43. Jak ustawić wygaszacz ekranu na brak? 

SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, Word(False), nil, 0);

Teraz jeżeli chcesz przywrócić domyślne ustawienia: 

SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, Word(True), nil, 0);


44. W jaki sposób ustawić głośność dla CD?
Należy skorzystać z modułu MMSystem:

auxSetVolume(0, $FFFFFFFF); // głośność na maxa. 


45. Jak zmienić położenie i rozmiar dowolnego okna?
Na samym początku musimy zdobyć uchwyt okna, a następnie ustawić jego pozycję za pomocą funkcji "SetWindowPos":

var
  H : THandle;
begin
  H := FindWindow(nil, 'Object Inspector');
  SetWindowPos(H, HWND_TOP, 0, 100, 200, 200,SWP_SHOWWINDOW);

Najpierw zdobyliśmy uchwyt "Inspektora Obiektów", a następnie ustawiamy jego nową pozycję. 


46. Jak zmaksymilizowac, zminimalizować dowolne okno?
Tak jak w powyższy przykładzie musimy znać uchwyt okna ( zdobywa się go tak samo jak w powyższym przykładzie ). Jeżeli już go znamy można skorzystać z takich funkcji:

ShowWindow(uchwyt, działanie);

Pod słowem działanie mogą się znaleĽć takie oto pozycje:

SW_MAXIMIZE  -  maksymilizuje okno;
SW_MINIMIZE  -  minimalizuje okno;
SW_RESTORE   -  przywraca;
SW_HIDE  -  ukrywa;
SW_SHOW  -  pokazuje; 


47. Jak zawiesić działanie myszki?
Należy skorzystać z modułu ShellAPI. Żeby przywrócić działanie myszy należy zresetować komputer. 

uses ShellApi;

 ShellExecute(Handle,'open','rundll32','mouse,disable',
nil,SW_SHOWNORMAL);


48. Jak sprawdzić, czy uchwyt jest przypisany do widocznego okna?
  

   if IsWindowVisible(Handle) then
     { jakaś procedura }

Jeżeli ten warunek zwróci wartość "True" to znaczy, że okno jest widoczne, w przeciwnym  wypadku zwróci "False". 


49. Jak odwołać się jednocześnie do wszystkich komponentów np. typu "TLabel"?

var
 
I : Integer;
begin
  for
I:=0 to componentcount do
  if
components[i] is TLabel then
  TPanel(components[i]).Caption := 'Cześć';
end;


50. Jak wyświetlić ikonę skojarzoną z danym rozszerzeniem?

uses ShellAPi;


var
  Ico : PShFileInfo;

begin
  GetMem( Ico, sizeof(TShFileInfo) );
  try
   shGetFileInfo( PChar('sciezka_i_nazwa_pliku'), 0, Icoi^, sizeof(TShFileInfo), shgfi_sysiconindex or shgfi_icon or shgfi_smallicon);

  Image1.Picture.Icon.Handle:=Ico.hIcon;

  finally
   FreeMem(sfi);
  end;
end;


51. Jak regulować dĽwięk przy pomocy "ScrollBar'a"?
Gdy umieścisz na komponencie komponent "ScrollBar" chcesz, aby przy jego pomocy regulować dzwięk. W procedurze "OnScroll" tego komponentu powinieneś wpisać taki kod:

  if ScrollPos = 100 then { jezeli jest na maxa to ustaw dzwiek na maxa }
    WaveOutSetVolume(0, $FFFFFFF)
  else
    WaveOutSetVolume(0, ScrollPos * 1000); 
{ inaczej ustaw wg. ustawień Scroll'a }

Nie zapomnij do listy modułów ( uses ) dodać słowa "MMSystem". 


52. Jak zaokrąglić wynik do dwóch miejsc po przecinku?
Służy do tego funkcja "FormatFloat". Oto przykład:

var
  R : Real;
begin
  R := 2.1111243432;
  ShowMessage(
    FormatFloat('0.00', R));


53. Jak zrobić zrzut z ekranu?
Oto kod:

var
 Can: TCanvas;
 B : TBitmap;
begin
 try
 { tworzenie zmiennej }
  Can := TCanvas.Create;
 { przechwycenie uchwytu ekrnau }
  Can.Handle := GetWindowDC(GetDesktopWindow);

 { tworzenie bitmapy }
  B := TBitmap.Create;
  B.Width := Screen.Width;
  B.Height := Screen.Height;
  B.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), 
      Can,
      Rect (0, 0, Screen.Width, Screen.Height));
   try // zapisz plik
     B.SaveToFile('C:\plik.bmp');
   except // w wyniku bledu...
     raise Exception.Create(
     'Bład w zapisie pliku...');
   end;

 finally
  Can.Free;
  B.Free;
 end;

54. Jak wyłączyć skróty w Windows? ( Ctrl + Del + Alt ). 
Na samym początku ostrzeżenie: poniższy kod nie działa na Windows NT. Należy oszukać system tak aby myślał, że nasz program jest wygaszaczem ekranu. 

var L:longbool;

begin
  SystemParametersInfo(97,Word(True),@L,0); //Włącza blokadę
  SystemParametersInfo(97,Word(False),@L,0); //Wyłącza blokadę
end; 

55. Jak skojarzyć moją aplikację z rozszerzeniem danego typu?
Trzeba dodać odpowiednie klucze do rejestru. Np. jeżeli chcesz skojarzyć swój program z plikiem *.txt to musisz dodać wartość do klucza w rejestrze. 

  Reg.RootKey := HKEY_CLASSES_ROOT;
  Reg.OpenKey(
  'txtfile\shell\open\command', True);
  Reg.WriteString('', '"'+ Application.ExeName + '" "%1"');


Polecam poczytanie artykułu "Rejestry" w dziale "Delphi".


56. Jak sformatować datę do postaci: 25 stycznia 2001 np?
Należy skorzystać z funkcji "FormatDateTime". Oto przykład:

ShowMessage(
FormatDateTime('dd mmmm yyyy', Now));

Takie rozwiązanie wyświetli na ekranie datę w postaci:

25 stycznia 2001

Poszukaj w systemie pomocy - tam znajdziesz więcej parametrów. 


57. Jak ukryć lub pokazać pasek stanu?
Oto dwa kody ukazujące chowanie i pokazywanie paska stanu:

{ ukrywanie paska }
var
  H : THandle;
  wClass : array[0..50] of Char;
begin
  StrPCopy(@wClass[0], 'Shell_TrayWnd');
  H := FindWindow(@wClass[0], nil);
  ShowWindow(H, SW_HIDE);
{ pokazywania paska }
var
   H : THandle;
   wClass : array[0..50] of Char;
begin
   StrPCopy(@wClass[0], 'Shell_TrayWnd');
   H := FindWindow(@wClass[0], nil);
   ShowWindow(H, SW_RESTORE);

58. Jak zamknąć inną aplikację znając jej ścieżkę? 
Jeżeli znasz ścieżkę uruchomionego programu to możesz zamknąć ją. Jak? Pokazuje to poniższy kod. Aha, do listy modułów uses musisz dodać słowo "TLHelp32". 

var
  PHandle, FHandle: THandle;
  Process:TProcessEntry32;
  Done, Next: Boolean;
  EXE : String; // ścieżka programu
begin
  EXE := 'C:\Windows\Pulpit\prog.exe';
  FHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  Process.dwSize := Sizeof(Process);
  Next := Process32First(FHandle,Process);
  while Next do
  begin{ jesli sciezka dostepu sie zgadza }
    if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(EXE) then
    begin
     PHandle:=OpenProcess(PROCESS_TERMINATE, False, 
     Process.th32ProcessID);
     { to probujemy zabic aplikacje }
     Done := TerminateProcess(PHandle,0);
     if not Done then
       MessageBox(Handle, 'Błąd', 'Błąd', MB_OK);
     end;
    Next := Process32Next(FHandle,Process);
   end;
   CloseHandle(FHandle);
end;

59. Jak zarejestrować skrót klawiaturowy dla całego systemu?
Czasami chcielibyśmy, aby skrót klawiatury był skojarzony z naszą aplikację - np. po kliknięciu kombinacji: Ctrl + F10 nasza aplikacja ma wykonywać jakąś czynność. 
Najpierw w procedurze "OnCreate" należy wpisać:

{ Ta funkcja rejestruje skrót: Ctrl + F4 dla naszej aplikacji }
  RegisterHotKey(Form1.Handle, $0001, MOD_CONTROL,  VK_F4);

Teraz w procedurze "OnClose" musisz wpisać:

{ zwolnienie skrotu w systemi }
UnregisterHotKey(Form1.Handle, $0001);

No i w końcu deklaracja samej obsługi skrótu. W sekcji "private" dopisz taką linie: 

   procedure wm_HOTKEY(var Msg:TMessage);message WM_HOTKEY;

Jest to komunikat "przechwytujący" skróty klawiaturowe. NajedĽ na niego kursorem myszy i wciśnij: Ctrl + Shift + C. Wpisz taką deklarację procedury:

  if Msg.WParam = $0001 then
  { reakcja na skrót klawiszowy }
  Application.Restore; // przywrócenie aplikacji 

60. Jak sprawdzić ile miejsca na dysku zajmuje plik?

var
  Plik : TSearchRec;
  FSize : Integer;
const // sciezka do programu
  Sciezka = 'C:\Windows\Pulpit\prog.exe';
begin
  if FindFirst(Sciezka, faAnyFile, Plik) = 0 then
    FSize:= PLik.Size else FSize:=0;
  FindClose(PLik);
  // wyswietl rozmiar pliku
  ShowMessage(IntToStr(FSize) + ' bajtów');

61. Jak wyświetlić okno z prośbą o podanie hasła?
Do tego służy funkcja "InputBox". Np:

  if InputBox('Hasło', 'Podaj hasło', '') = 'Adam' then
      ShowMessage('Tak') else
    Application.Terminate;

62. Jak zaszyfrować jakiś plik tekstowy?
Gdyż jest to dość rozbudowane pojęcie postanowiłem chlapnąć artykulik na ten temat. 


63. Jak narysować tekst w pionie?
Posłuż się takim kodem:

procedure TForm1.Button1Click(Sender: TObject);
var
  LF : TLogFont;
begin
  Canvas.Font.Size := 24;
  GetObject(Canvas.Font.Handle, SizeOf(TLogFont), @lf);

  lf.lfEscapement := 90 * 10;
  lf.lfOutPrecision := OUT_TT_ONLY_PRECIS;

  Canvas.Font.Handle := CreateFontIndirect(LF);

  SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
  Canvas.Brush.Style := bsClear;

  Canvas.TextOut(
    20, 200, 'Hello World!');
end;

64. Jak dostosować program, aby wyglądał tak samo w różnych rozdzielczościach?
Każda forma ma właściwość "Scaled". Zmień ją na False, a forma będzie wyglądała tak samo w różnych rozdzielczościach. 


65. Jak zmienić rozdzielczość?
Oto kod:

var
  Mode: TDeviceMode;
begin
  with Mode do
  begin
    dmSize:=SizeOf(Mode);
    dmBitsPerPel:=16;
    dmPelsWidth:=640;
    dmPelsHeight:=480;
    dmFields:=DM_PELSWIDTH+DM_PELSHEIGHT;
    ChangeDisplaySettings(Mode,0)
  end;
end;

66. Jak przejść w stan oczekiwania?

SetSystemPowerState(true, true);

67. Jak usunąć moją aplikację z listy znajdującej się po naciśnięciu klawiszy: Ctrl + Alt + Del?
W sekcji "Interface" dodaj linię:

function RegisterServiceProcess(dwProcessId,dwType:dword):
Integer;stdcall;external 'kernel32.dll'

Teraz możesz napisać:

RegisterServiceProcess(GetCurrentProcessID, 1); 

68. Jak uzyskać informację o katalogu Windows\Temp?
Oto kod. Zmienna "S" zawiera ścieżke katalogu Windows\Temp:

var
  Buffer: array[0..MAX_PATH-1] of Char;
  S : String;
begin
  SetString(S, Buffer, GetTempPath(SizeOf(Buffer), Buffer));
  ShowMessage(S);
end;

69. Jak odświeżyć widok pulpitu?

UpdateWindow(GetDesktopWindow);


70. Jak wyświetlić Windowsowe białe okno informacją o błędzie?
Poniższe polecenie wyświetla okno na białym tle z przyciskiem "Zamknij" informujące o jakimś błędzie: 

  FatalAppExit(0, 'Zaistniał jakiś błąd');

71. Jak odczytać rozdzielczość ekrnau? 

var
  Rozd : packed record
    X, Y : Integer;
  end;
begin
  Rozd.X := GetSystemMetrics(SM_CXSCREEN); // pobranie rozdzielczosci
  Rozd.Y := GetSystemMetrics(SM_CYSCREEN);
  ShowMessage(
  Format('Rozdzialość ekranu: ' + #13+ '%d x %d', [Rozd.X, Rozd.Y]));

72. Nie mogę w Delphi2 otworzyć programu, który został napisany w Delphi5, co robić?
Jeżeli klikniesz prawym przyciskiem na formie to rozwinie się menu, w jednej z pozycji będzie pole "Text DFM" - odznacz tę pozycje i teraz zapisuj program. Jeżeli będziesz miał trochę szczęścia ( pisząc program w Delphi5 nie będziesz używał komponentów, których nie ma w Delphi2 ) to może skompilujesz swój program na Delphi 2. 


73. Jak sprawdzić, czy użytkownik jest w Internecie?
Ta funkcja nie wszystkim działa więc....

W sekcji "Interface" dodaj nagłówek:

function InetIsOffline(Flag: Integer): Boolean; stdcall;
external 'URL.DLL';

Teraz w procedurze: 

  if InetIsOffline(0) then
    ShowMessage('Jestem offline') else
  ShowMessage('Jestem online');

74. Co zrobić, aby film wyświetlał się np. na komponencie Panel?
Jeżeli chcesz wyświetlć film na komponencie typu TPanel to piszesz:

  with MediaPlayer1 do
  begin
    Display := Panel1;
    DisplayRect := Panel1.ClientRect;
  end;

75. Jak odczytać numer linii w komponencie Memo?
Kompletny kod programu znajduje się w dziale Algorytmy. Kliknij tutaj, a go ujrzysz :)


76. Jak przewijać zawartość Memo poprzez naciskanie przycisku?
Musisz w tym celu skorzystać z komunikatów i wysłać komunikat do komponentu. Więcej o komunikatach możesz poczytać w artykule "Komunikaty". 

 Memo1.Perform(WM_VSCROLL,SB_LINEDOWN,0); // jenda linia w dol
 Memo1.Perform(WM_VSCROLL,SB_LINEUP,0); // jedna linia w gore

77. Jak przesuwać formę jeżeli BorderStyle = bsNone?
Musisz pierw zadeklarować dwie zmienne globanle: 

var
  MD : Boolean;
  P : TPoint;

Teraz wygeneruj procedury: OnMouseDown, OnMouseMove, OnMouseUp. Procedury te powinny wyglądać tak:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MD := True;
  P :=  Point(X, Y);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if MD then
  begin
    Left := Left + (X - P.X);
    Top := Top + (Y - P.Y);
  end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MD := False;
end;

78. Jak odczytać położenia kursora w Memo lub RichEdit?
W dziale "Algorymy" masz kompletny kod programu. [ Zobacz... ]


79. Co zrobić, aby każdą linię RichEdit'a zapisać w osobnej zmiennej?
Może nie do osobnej zmiennej, ale do tablicy:

var
  Lines : array of String;

procedure TForm1.Button1Click(Sender: TObject);
var
  I : Integer;
begin
  SetLength(Lines, RichEdit1.Lines.Count);
  for I := Low(Lines) to High(Lines) do
    Lines[i] := RichEdit1.Lines.Strings[i];
end;

Wykorzystana tu została tablica dynamiczna, która przybiera rozmiar, który jest ilością linii w RichEdit.


80. Jak po upływie 30 sek. zamknąć program?
Do tego celu musisz użyć komponentu TTimer. Generujesz procedurę OnTimer i wpisujesz taki kod: 

var
  I : Integer = 30;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := 'Do zakończenia programu pozostało: ' + IntToStr(I);
  Dec(i);
  If I = 0 then Close;
end;

81. Jak uzyskać listę plików ( EXE) uruchomionych w systemie?
Trzeba w tym celu skorzystać z nisko poziomowych funkcji API: 

uses TlHelp32;

procedure TForm1.btnAddEXEClick(Sender: TObject);
var
  _HWND : THandle;
  Proc : TProcessEntry32;
begin
  _HWND := CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);

  Proc.dwSize:=SizeOf(Proc); // okresl rozmiar struktory

  if Integer(Process32First(_HWND, Proc)) <> 0 then
  repeat
    ListBox1.Items.Add(Proc.szExeFile); // dodaje sciezkie pliku do ListBox'a
  until Integer(Process32Next(_HWND, Proc)) = 0; // dopoki wartosc nie osiagnie 0

  CloseHandle(_HWND);
end;

82. Jak pozmieniać znaki w określonym miejscu pliku?
Należy skorzystać ze strumienic. Artykuł o strumieniach możesz przeczytać klikjąc tutaj.
Procedura obejmie swoim zasięgiem 500 znaków zaczynając od 100 bajtów pliku:

procedure TForm1.ChangeCharsClick(Sender: TObject);
var
  F : TFileStream;
  Buff : array[0..1024] of char;
  iMuch, i : Integer;
begin
  F := TFileStream.Create('C:\Scandisk.log', fmOpenReadWrite);
  try
    F.Position := 200; // ustaw na pozycji
    iMuch := F.Read(Buff, 500); // odczytaj znaki

    for I := 0 to iMuch do
      if Buff[i] = ' ' then Buff[i] := '_';  // zastap spacje znakiem _

    F.Position := 100; // ustaw na poprzedniej pozycji
    F.Write(Buff, iMuch);  // zapisz nowa warosc
  finally
    F.Free;
  end;
end;

83. Jak wykonać jakąś operacje o danej godzinie?
W tym celu musisz skorzystać z komponentu TTimer. Będzie on co sekunde sprawdzał, która jest godzina. Jeżeli będzie to np. 09.30 to wykona jakąś operacje.

procedure TForm1.TimerTimer(Sender: TObject);
var
  Present : TDateTime;
  Hour, Min, Sek, MSec : Word;
begin
  Present := Now;
  DecodeTime(Present, Hour, Min, Sek, MSec);
  if (Hour = 09) and (Min = 31) and (Sek = 0) then
    ShowMessage('Jest godz: 9.30'); { <- Uruchomi sie o godz. 9.31 }
end;

84. Jak usunąć plik do kosza?
Przede wszystkim do listy uses musisz dodać słowo ShellAPI. Teraz w procedurze: 

var
  R : TSHFileOpStruct;
begin
 with R do
 begin
  Wnd:=Handle; // oznaczenie uchwytu
  wFunc := FO_DELETE;// opcja
  pFrom:='c:\kody.html'; // z pliku
  fFlags := FOF_ALLOWUNDO;
 end;
 SHFileOperation(R);

85. Jak rysować po ListBox'ie?
Ten sposób działa w przypadku ListBox'a jak i ComboBox'a. W moim przykładzie posłużę się komponentem ComboBox, w którym tak jak jest to w przypadku większości przypadków programów biurowych zastosuje listę rozwijalną dla czcionek.  Każda czcionka będzie posiadała kwadracik symbolizujący kolor oraz nazwa koloru. Na pewno wiesz o co chodzi - jeżeli nie wiesz to zobacz :)
Pierwsze co musisz zrobić to zmienić właściwość Style komponentu TComboBox na csOwnerDrawFixed. Teraz wygeneruj procedurę OnDrawItem komponentu. Wpisz taki kod:

type
{ Rekord zawiera pozycje kolru i nazwy tego koloru }
  TColorRec = packed record
    Color : TColor;
    Des : String[15];
  end;

  { Tablica kolorow }
const ColorTab : array[0..6] of TColorRec =
  (
  (Color: clBlack; Des: 'Czarny'),
  (Color: clBlue; Des: 'Niebieski'),
  (Color: clGreen; Des: 'Zielony'),
  (Color: clRed; Des: 'Czerwony'),
  (Color: clYellow; Des: 'Źółty'),
  (Color: clGray; Des: 'Szary'),
  (Color: clWhite; Des: 'Biały')
  );

procedure TForm1.cmbFontDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with cmbFont.Canvas do
  begin
    FillRect(Rect);
    Brush.Style := bsSolid; // styl - jednolity
    Brush.Color := ColorTab[Index].Color; // kolor z tablicy
    Rectangle(Rect.Left + 2, Rect.Top + 2, Rect.Left + 32, Rect.Bottom - 2);
    Brush.Style := bsClear; // tło na przezroczyste
    TextOut(Rect.Left + 40, Rect.Top + 2, ColorTab[Index].Des); // pisz tekst
  end;
end;

Teraz generuj procedurę OnCreate: 

procedure TForm1.FormCreate(Sender: TObject);
var
  I : Integer;
begin
 { wypelnij pola danymi }
  for I := Low(ColorTab) to High(ColorTab) do
    cmbFont.Items.Add(ColorTab[i].Des);
end;

86. Jak dodać pozycję do menu jeżeli kliknie się na ikonę aplikacji na pasku zadań?
Jeżeli program jest uruchomiony i kliniesz prawym przyciskiem na na ikonę programu to rozwinie się menu ze standardowymi opcjami ( Zamknij, Minimalizuj itp. ). Można dodać tam swoją pozycje - wystarczy odwołać się do WinAPI.

Umieść deklarację nowej procedury:

  private
    procedure WMNewPos(var Msg : TMsg; var Handle : Boolean);

Teraz definicja powinna wyglądać tak: 

procedure TForm1.WMNewPos(var Msg: TMsg; var Handle: Boolean);
begin
  if (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = 101) then
    ShowMessage('Cze!');
    Handle := True;
end;

To była obsługa naszej nowej pozycje - wyświetli się okno z informacją. Teraz wygeneruj procedurę OnCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
  AppendMenu(
  GetSystemMenu(Application.Handle, FALSE), MF_STRING, 101, 'Kliknij mnie!' );
  Application.OnMessage := WMNewPos;
end;

87. Jak zrobić w RichEdit indeks dolny lub górny? ( tak jak w Wordzie ).
Przede wszystkim do listy modułów ( uses ) musisz dodać "RichEdit". 

procedure TForm1.btnIndexClick(Sender: TObject);
var
  CharFormat : TCharFormat;
begin
  ZeroMemory(@CharFormat, SizeOf(TCharFormat)); // zerowanie pamieci
  with CharFormat do
  begin
     cbSize := SizeOf(TCharFormat);  // przydziel pamiec
     RichEdit.Perform(EM_GETCHARFORMAT, 1, LParam(@CharFormat));
     yHeight:=Round(yHeight*0.7); // wysokosc
     yOffset:=Round(yHeight*0.3);   // polozenie

     RichEdit.Perform(EM_SETCHARFORMAT, wParam(SCF_SELECTION), LParam(@CharFormat));
  end;
  RichEdit.SetFocus;
  RichEdit.SelLength := 0;
end;

Najpierw pobierane są dotychcczasowe ustawienia czcionki, a następnie do wysokości czcionki dodawane jest położenie ( yOffset ). Później nowa wartość jest przypisywana komponentowi. Jeżeli chcesz mieć indeks dolny musisz nadać parametrowu yOffset wartość ujemną - jeżeli chcesz żeby było tak jak wczęsniej musisz nadać wartość zerową. 


88. W jaki sposób sprawdzić jaką literą oznaczony jest napęd CD-ROM?
Poniższa funkcja zwraca zmienną tekstową z literą dysku - np: H:\

function GetCDROM : String;
var
  I : Integer;
  Drive : String;
  DTYpe : Integer;
begin
  for I := Ord('A') to Ord('Z') do
  begin
    Drive := Chr(i) + ':\';
    DType := GetDriveType(PCHar(Drive));

    if DType = DRIVE_CDROM then Result := Drive;
  end;
end;

89. Jak włączyć lub wyłączyć diody klawiszy NumLock, CapsLock?

VK_CAPITAL - caps lock
VK_SCROLL - scroll lock
VK_NUMLOCK - num lock

Oto kod:

const
  ON = 1;
  OFF = 2;
var
  KS : TKeyboardState;
begin
  GetKeyboardState(KS);
  KS[VK_SCROLL] := ON;
  SetKeyboardState(KS);

Ten kod może nie zadziałać w Win 2000/NT. Oto kod odpowiedni dla tych platform:

keybd_event(VK_NUMLOCK, $45, KEYEVENTF_EXTENDEDKEY or 0, 0);
keybd_event(VK_NUMLOCK, $45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);

90. Jak zapisać zawartość schowka do pliku, i zawartość pliku do schowka?
Zapisywanie zawartości do pliku: 

uses ClipBrd;

procedure TForm1.Button1Click(Sender: TObject);
var
  TF : TextFile;
begin
  AssignFile(TF, 'C:\Clipboard.txt');
  try
    Rewrite(TF);
    Writeln(TF, ClipBoard.AsText);
  finally
    CloseFile(TF);
  end;
end;

Kopiowanie zawartości pliku do schowka:

procedure TForm1.Button2Click(Sender: TObject);
var
  TF : TextFile;
  S : String;
begin
  AssignFile(TF, 'C:\Clipboard.txt');
  try
    Reset(TF);
    Readln(TF, S);
    ClipBoard.AsText := S;
  finally
    CloseFile(TF);
  end;
end;

91. Jak wykryć połączenie z netem?

U mnie działa taki kod: 

function Connected: Boolean;
var
  Flags: DWORD;
begin
  Flags := INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or
                 INTERNET_CONNECTION_PROXY or INTERNET_CONNECTION_MODEM_BUSY;

  Result := InternetGetConnectedState(@Flags, 0);  // sprawdz polaczenie.
end;

Do sekcji uses należy dodać moduł WinInet. Funkcja zwraca True jeżeli jest połączenie, a False jeżeli go nie ma.


92. Do czego służą funkcje Round i Trunc?
Funkcje te zaokrąglają odpowiednio do dołu i do góry liczbę typu zmiennno-przecinkowego. Np:

var D : Double;
begin
  D := 2.8;
  ShowMessage(IntToStr(Trunc(D));
end;

93. Jak skasować wszystkie pliki z katalogu wyjątkiem np. a.txt oraz a.dat?
Oto rozwiązanie tego problemu: 

  function IsSlash(const sText: String) : String;
  begin
  { sprawdzenie, czy na koncu jest znak \ }
    if sText[Length(sText)] <> '\' then
      Result := sText + '\' else Result := sText;
  end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  Found : Integer;
begin
  {  szukaj plikow ( wszystkiech ) w danym kataogu }
  Found := FindFirst(IsSlash(Edit1.Text) + '*.*', faAnyFile, SR);
  while (Found = 0) do
  begin
  { sprawdzenie jaka jest nazwa pliku - jezeli jest to a.txt lub a.dat -
   nie rob nic }
    if (SR.Name <> 'a.txt') and (SR.Name <> 'a.dat') then
      DeleteFile(IsSlash(Edit1.Text) + SR.Name);

    Found := FindNext(SR); // szukaj dalej
  end;
  FindClose(SR);
end;

94. W jaki sposób sprawdzić ile miejsca zajmują wszystkie pliki w danym katalogu?
Oto rozwiązanie. Procedura podaje ilość miejsca w kB:

function IsSlash(const sText: String) : String;
  begin
  { sprawdzenie, czy na koncu jest znak \ }
    if sText[Length(sText)] <> '\' then
      Result := sText + '\' else Result := sText;
  end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  Found : Integer;
  Size : Int64; { <-- dla duzych plikow - ten typ zmiennej }
begin
  Size := 0; // zeruj
  {  szukaj plikow ( wszystkiech ) w danym kataogu }
  Found := FindFirst(IsSlash(Edit1.Text) + '*.*', faAnyFile, SR);
  while (Found = 0) do
  begin
    Size := Size + (SR.Size);

    Found := FindNext(SR); // szukaj dalej
  end;
  FindClose(SR);
{ dzielenie przez 1024, aby otrzymac liczbe kilobajtow }
  Size := Size div 1024;
  ShowMessage('Katalog: ' + Edit1.Text + ' zajmuje: ' + IntToStr(Size) + ' kB');
end;

95. Jak odczytać tag z pliku mp3?
Kompletny przykład możesz znaleźć ściągająć kod źródłowy. Kliknij tutaj


96. Jak wywołać okno połączenia Internetowego?

WinExec('rundll32.exe rnaui.dll,RnaDial TP SA',sw_show);

Gdzie TP SA to nazwa połączenia.


97. W jaki sposób zaznaczyć wybrany element w ListView?

Przykładowo ten kod zaznaczy 5 element:

  with ListView do 
  begin
    Selected    := Items[5];
    ItemFocused := Selected;
    ListView.SetFocus;
  end;

98. W jaki sposób uniemożliwić zamknięcie programu?
Musisz wygenerować procedurę OnCloseQuery i wpisać w niej:

CanClose := False;

99. Jak zmienić datę modyfikacji pliku?

Na początek procedura:

procedure FSetFileTime(FFile : String; Data : String);
var
  Age, FHandle: integer;
  LocalFileTime, FileTime: TFileTime;
  F: File;
begin
  if FileExists(FFile) then
  begin
    AssignFile(F, FFile);
    Reset(F);
    try
      Age := DateTimeToFileDate(StrToDateTime(Data));
      FHandle := TFileRec(F).Handle;
      DosDateTimeToFileTime(LongRec(Age).Hi, LongRec(Age).Lo,
        LocalFileTime);
      LocalFileTimeToFileTime(LocalFileTime, FileTime);
      SetFileTime(FHandle, nil, nil, @FileTime); {ustawia datę ostatniej modifikacji }
    finally
      CloseFile(F);
    end;
  end else
    ShowMessage('Błąd! Plik nie istnieje!');
end;

Teraz żeby zmienić datę piszesz:

  FSetFileTime('C:\Delphi.zip', '01-01-01');

W tym wypadku na 01-01-2001 r. 


100. Jak wydać dźwięk z głośniczka w komputerze?
Na naszej sronie umieszczeony jest moduł bleepint, który doskonale spełnia tę funkcje.


101. Wyświetlenie okna do regulacji głośności? 

  WinExec('SNDVOL32.EXE', SW_SHOWNORMAL);

102. Jak zrobić aby formularz był przeźroczysty?

W sekcji private:

    procedure CreateParams(var Params: TCreateParams); override;

Teraz w sekcji Implementation:

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;

103. Jak załadować obrazek ze schowka do komponentu Image?

uses Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromClipboardFormat(CF_BITMAP, ClipBoard.GetAsHandle(CF_BITMAP), 0);
end;

104. Odczyt liczby przycisków myszy.

  Label1.Caption := 'Liczba przycisków: ' + IntToStr(GetSystemMetrics(SM_CMOUSEBUTTONS));

105. Jak uruchomić wygaszacz ekranu?

  SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);

106. W jaki sposób pokazać okno kopiowania z dyskietki na dyskietkę?

WinExec('rundll32 diskcopy,DiskCopyRunDll', SW_SHOWNORMAL);

107. Jak ustawić czas, po którym wygaszacz zostanie włączony?

Oto króciutki kodzik:

var
  Delay: integer;
begin
  Delay := 180; // tym razem tutaj podaje się w sekundach  (180 sek = 3 min.)
  SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, Delay, nil, 0);

108. Jak wyświetlić na Labelu liczbę zmienno-przecinkową?
Szerzej konwersja jest opisana w kursie Delphi. [ Zobacz ]

Label1.Caption := FloatToStr(LiczbaTypuReal);

109. Jak reagować na naciśnięcie klawiszy strzałek?
Musisz wpisać odpowiedni kod w procedurze OnKeyDown. Numery ASCII strzałek to:

37 - lewa
38 - góra
39 - prawa
40 - dół

Teraz porównujesz: if Key = 37 then { coś }

110. Jak sprawdzić, czy dyskietka znajduje się w stacji?
Zasada jest prosta. Spróbujemy coś na dyskietce zapisać. Jeżeli się uda to znaczy, że dyskietka jest w dstacji.

var
  TF: TextFile;
begin
  AssignFile(TF, 'A:\plik.txt');
  try
    ReWrite(TF);
    ShowMessage('Jest dyskietka');
    DeleteFile('A:\plik.txt');
  except
    raise Exception.Create('Brak dyskietki w stacjii');
  end;
end;

111. Brakuje mi pliku DsgnIntf.dcu. Czy mógłbyś mi go przesłać?
Pewnie masz ten plik, a wydaje Ci się że nie :) Prawda, jest on potrzebny do skompilowania niektórych komponentów, a musi się znaleźćw katalogu Lib. Poszukaj! Jeżeli nie masz wersji skompilowanej to masz w wersji pliku *.pas ( zapewne ). Wtedy musisz ten moduł skompilować i umieścić w katalogu Lib.


112. Jak przerwać działanie pętli?
Wystarczy, że gdzieś w pętli umieścisz komendę Break. Ale uważaj - komenda ta działa tylko w pętli!


113. Jak przerwać działanie pętli naciśnięciem klawisza?

oto cały kod programu:


var
  Form1: TForm1;
  Aborted : Boolean;   // <-- nowa zmienna

implementation

{$R *.DFM}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
// jezeli nacisniemy ESC
  if Key = 27 then Aborted := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  Aborted := False;
  for i := 0 to 100000 do
  begin
    Application.ProcessMessages; // <-- konieczna linia
    Sleep(50);
    if Aborted then Break;
  end;
end;

end.

i jeszcze zmień właściwość KeyPreview na True. u mnie działa -
przerywa pętle naciśnięciem klawisza.


114. Jak obliczyć różnicę dat [ilość dni, miesięcy, lat]?
A wiec oto rozwiazanie:


var
  OldDate, Date: TDateTime;
  wYear, wYear2, wMonth, wMonth2, wDay, wDay2 : Word;
  fYear, fMonth, fDay : Word;
begin
  OldDate := Now;   // pobieranie dziesiejszej daty
  DecodeDate(OldDate, wYear, wMonth, wDay);

  Date := StrToDate('01-10-10');
  DecodeDate(Date, wYear2, wMonth2, wDay2);

  fYear := wYear - wYear2;
  fMonth := wMonth - wMonth2;
  fDay := wDay - wDay2;
  ShowMessage(Format('Różnica dni: %d, miesięcy: %d, lat: %d',
  [fDay, fMonth, fYear]));

115. Co zrobić, gdy nie chcę aby na pasku zadań wyświetlona była "belka" formy wywołanej z DLL'a?

Czasem, gdy wywołujemy formę z DLL'a to na pasku zadań pojawia się"belka" oznaczająca dany formularz. Co zrobić gdy nie chcemy, aby takowa się pojawiała? Pomiędzy blok begin..end umieść takie linie:

Application.Handle := Form1.Handle;

Zakładając, że formularz nazywa się Form1. I będziesz jeszcze musiał dodać moduł Forms do listy modułów. 


116. Co zrobić gdy chcę umieścić ikonę obok pozycji ComboBox?

Należy wygenerowć procedurę OnDraw i rysować ręcznie. Komplenty przykład wraz z opisem możesz znaleźć tutaj.


117. W jaki sposób wygenerować procedurę jeżeli nie działa skrót Ctrl + Shift + C?
U mnie na Delphi 5 automatycznie w sekcji Implementation generowana jest procedura z sekcji private po naciśnięciu kombinacji klawiszy i najechania nań kursorem myszy. To jest tylko ułatwienie, bo można to robić po prostu w sposób ręczny. Tzn., jeżeli w sekcji private Twoja procedura nazywa się "Moja" to jej deklaracji w sekcji Implementation powinna wyglądać tak:

procedure TForm1.Moja;
begin
end;

Pod warunkiem, że nazwa formularza to Form1.


118. Jak zrobić program na zasadzie helpa - wyszukuje żądaną pozycję?
Cały kompletny kod źródłowy możesz ściągnąć klikając tu.

A oto jedna najważniejsza procedura:

procedure TMainForm.edtSearchKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i, Found : Integer;
begin
  for I := 0 to lbSearchStrings.Items.Count -1 do  // analizuj wszystkie pozycje
  begin
    Found := Pos(edtSearch.Text, lbSearchStrings.Items[i]); // szukaj ciagu znakow
    if (Found > 0) and (lbSearchStrings.Items[i][1] = edtSearch.Text[1]) then
    begin
      lbSearchStrings.ItemIndex := i; // jezeli znaleziono to zaznacz
      Break; // i przerwij dzialanie petli
    end;
  end;
end;
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się lub zarejestruj, żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproś o nowe hasło
Shoutbox
Musisz zalogować się, aby móc dodać wiadomość.

18-11-2017 18:28
Dzien dobry Potrzebna kasa? Zaden problem! https://goo.gl/eaN
BmN

17-11-2017 09:45

17-11-2017 08:02

16-11-2017 16:08
áĺńďëŕňíűĺ ďîđíî ôčëüěű ěîëîäĺíüęčěč ďîđíî ěîëîäĺíüęčĺ ëĺńáč [url=http://angela
dorer.com/]đóńńęîĺ
ďîđíî đóńńęčěč ěîëîäĺíüę

16-11-2017 13:44
You've got wonderful information these. <a href="http://najlep
szetabletkinamase.
eu/" Chytryhttp://najlepszeta
bletkinamase.eu/</a
>

Licznik
30,996,483 unikalne wizyty