Kilka korekt
user_6919294
pascal
a year ago
2.7 kB
11
Indexable
{ Hej Daria, ulepszyłem tobie kod, po mojemu - Profesionaliscie :) Krótko - Dodałem stałą MAX_ADV_IMAGES określającą maksymalną liczbę obrazków reklamowych. - Zdefiniowałem nowy typ TAdvImage, który zawiera zarówno obrazek, jak i jego podpowiedź (hint). - Zmienbiłem tablicę advImage na AdvImages, która przechowuje elementy typu TAdvImage. - Poprawiłem nazewnictwo funkcji i zmiennych, aby były bardziej opisowe i zgodne z konwencjami. - Dodałem sprawdzenie, czy URL nie jest pusty przed wywołaniem ShellExec w procedurze AdvImageOnClick. - Zmieniłem procedurę SetAdvImg na LoadAdvImages, która teraz tworzy i inicjalizuje obiekty TBitmapImage. - Zaktualizowałem procedurę SetAdvImageHints, aby ustawiała podpowiedzi zarówno dla obrazka, jak i dla rekordu TAdvImage. - Dodałem procedurę CleanupAdvImages do zwalniania pamięci zajmowanej przez obrazki. } #ifdef ADV const ADV_WIDTH = 120; ADV_HEIGHT = 160; ADV_SPACING = 5; MAX_ADV_IMAGES = 5; // dodamy maksymalna liczba obrazków reklamowych type TAdvImage = record Image: TBitmapImage; Hint: string; end; var AdvImages: array[0..MAX_ADV_IMAGES-1] of TAdvImage; procedure AdvImageOnClick(Sender: TObject); var ErrorCode: Integer; URL: string; begin if Sender is TBitmapImage then begin URL := TBitmapImage(Sender).Hint; if URL <> '' then ShellExec('open', URL, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); end; end; procedure LoadAdvImages(const ImageFiles: array of string); var i: Integer; AdvTop, AdvLeft: Integer; begin AdvTop := LabelTime1.Top + 20; AdvLeft := 5; for i := Low(ImageFiles) to High(ImageFiles) do begin if i >= MAX_ADV_IMAGES then Break; if not FileExists(ExpandConstant('{tmp}\' + ImageFiles[i])) then ExtractTemporaryFile(ImageFiles[i]); AdvImages[i].Image := TBitmapImage.Create(WizardForm); with AdvImages[i].Image do begin Parent := WizardForm.InstallingPage; Bitmap.LoadFromFile(ExpandConstant('{tmp}\' + ImageFiles[i])); AutoSize := False; SetBounds(AdvLeft, AdvTop, ADV_WIDTH, ADV_HEIGHT); Cursor := crHand; OnClick := @AdvImageOnClick; end; AdvLeft := AdvLeft + ADV_WIDTH + ADV_SPACING; end; end; procedure SetAdvImageHints(const Hints: array of string); var i: Integer; begin for i := Low(Hints) to High(Hints) do begin if i >= MAX_ADV_IMAGES then Break; AdvImages[i].Hint := Hints[i]; AdvImages[i].Image.Hint := Hints[i]; end; end; procedure CleanupAdvImages; var i: Integer; begin for i := 0 to MAX_ADV_IMAGES-1 do begin if Assigned(AdvImages[i].Image) then AdvImages[i].Image.Free; end; end; #endif
Editor is loading...
Leave a Comment