Несколько лет назад, когда потребовалось выводить САБЖ, долго тр@хался - дельфя7 ну никак не хотела обновлять номер свежескомпиленной версии базы...
После долгих поисков нашел - честно скажу, где хз...не помню, НО - работала !!! кроме...обновленя версии скрмпиленного...
При переводе (поэтапного) с дельфей на лазарь подключил этот модуль - и О ЧУДО !!!! версии показываются правильно, жрет не много...
Только некоторые глючки есть - ну это мои ручки кривые - я ж просто взял и в uses' ах пристыковал... размер окна автоматом не считается...
Кто-то возьмется подправить???
Просто даю фай модуля (а в дельфях я его еще и градиентной заливкой из Raize Lib красил ...эх...)
А может, кому-то пригодится? Мне понравился.
- Код: Выделить всё
- {
 Данная процедура показывает небольшое диалоговое окно с данными о программе взятыми из Version Info
 Окно автоматически изменяет свой размер в зависимости от данных Version Info.
 Жилин С.В.
 jilin@list.ru
 ////////////////////////////////////
 Огромное СПАСИБО автору !!!
 Чуть подправил-изменил...
 Почти все работает, но... при переводе с Delphi7 - нет изменений размеров окна и....
 ручками добился эффектов - кто подточит - тому большой смайл :-)
 Игорь Плещенков (Little_Roo)
 Lazarus 0.9.29 r23335 FPC 2.3.1 i386-win32-win32/win64
 ///////////////////////////////////
 }
 unit AboutF;
 interface
 uses
 Windows, SysUtils,Graphics,Controls, Forms,
 StdCtrls,ExtCtrls;
 procedure ShowAbout;
 implementation
 uses unit1;
 procedure ShowAbout;
 var
 About1: TForm;
 S,TS: ansistring;
 h,sz,Len: DWORD;
 Buf: PChar;
 Value: Pointer;
 LabelLeft,i: Integer;
 begin
 S := Application.ExeName;
 sz := GetFileVersionInfoSize(PChar(S), h);
 if sz > 0 then
 begin
 Buf := AllocMem(sz);
 GetFileVersionInfo(PChar(S), h, sz, Buf);
 VerQueryValue(Buf, '\VarFileInfo\Translation', Value, Len);
 TS := IntToHex(MakeLong(HiWord(Longint(Value^)), LoWord(Longint(Value^))), 8);
 About1 := TForm.Create(Application);
 With About1 do
 try
 Caption := 'О программе... '{+Application.Title};
 Position := poScreenCenter;
 BorderStyle := bsDialog;
 { With TImage.Create(Application) do
 try
 begin
 Picture.LoadFromFile('Foto\1.bmp');
 Left := 2;
 Top := About1.Height - Height - 35;
 Parent := About1;
 AutoSize := True;
 end;
 except
 Picture.Free;
 end;
 }
 With TImage.Create(Application) do
 begin
 Picture.Icon := Application.Icon;
 Left := 10;
 Top := 10;
 Parent := About1;
 AutoSize := True;
 LabelLeft := Left+Width + 50;
 end;
 VerQueryValue(Buf, PChar('StringFileInfo\'+TS+'\ProductName'), Pointer(Value), Len);
 if Len > 1 then
 With TLabel.Create(Application) do
 begin
 Left := LabelLeft - 100;
 Top := About1.Controls[About1.ControlCount-1].Top;
 Font.Size := 10;
 Font.Style := [fsBold];
 Font.Color := clRed;
 Transparent := true;
 Parent := About1;
 //Caption := StrPas(PChar(Value));
 Caption := 'СУБД Международного лицея СПбГУП';
 end;
 VerQueryValue(Buf, PChar('StringFileInfo\'+TS+'\FileVersion'), Pointer(Value), Len);
 if Len > 1 then
 With TLabel.Create(Application) do
 begin
 Left := LabelLeft -100;
 Font.Style := [fsBold];
 Top := About1.Controls[About1.ControlCount-1].Top+About1.Controls[About1.ControlCount-1].Height+5;
 Caption := 'Версия: '+StrPas(PChar(Value));
 Transparent := true;
 Parent := About1;
 end;
 VerQueryValue(Buf, PChar('StringFileInfo\'+TS+'\CompanyName'), Pointer(Value), Len);
 if Len > 1 then
 With TLabel.Create(Application) do
 begin
 Left := LabelLeft - 100;
 Top := About1.Controls[About1.ControlCount-1].Top+About1.Controls[About1.ControlCount-1].Height+5;
 Caption := 'Компания: '+StrPas(PChar(Value));
 Transparent := true;
 Parent := About1;
 end;
 VerQueryValue(Buf, PChar('StringFileInfo\'+TS+'\Author'), Pointer(Value), Len);
 // if Len > 1 then
 With TLabel.Create(Application) do
 begin
 Left := LabelLeft - 100;
 Top := About1.Controls[About1.ControlCount-1].Top+About1.Controls[About1.ControlCount-1].Height+5;
 //Caption := 'Автор: '+StrPas(PChar(Value));
 Caption := 'Автор: Игорь Н. Плещенков (Little Roo)';
 Transparent := true;
 Parent := About1;
 end;
 VerQueryValue(Buf, PChar('StringFileInfo\'+TS+'\LegalCopyright'), Pointer(Value), Len);
 if Len > 1 then
 With TLabel.Create(Application) do
 begin
 Left := LabelLeft - 100;
 Top := About1.Controls[About1.ControlCount-1].Top+About1.Controls[About1.ControlCount-1].Height+5;
 Caption := 'Copyright: ' + StrPas(PChar(Value));
 Transparent := true;
 Parent := About1;
 end;
 Height := Controls[ControlCount-1].Top+Controls[ControlCount-1].Height+85;
 Width := 10;
 for i := 0 to ControlCount-1 do
 if Controls[i] is TLabel then
 if Controls[i].Left+Controls[i].Width+20 > Width then
 Width := Controls[i].Left+Controls[i].Width + 210;
 With TButton.Create(Application) do
 begin
 Caption := 'Ok';
 Left := Trunc((About1.Width/2)-(Width/2));
 Top := Trunc(About1.Height-40);
 ModalResult := mrOk;
 Cursor := crHandPoint;
 Parent := About1;
 end;
 ShowModal;
 finally
 Free;
 end;
 end;
 end;
 end.





 мой мозг так далеко не простирается
 мой мозг так далеко не простирается 

