Несколько лет назад, когда потребовалось выводить САБЖ, долго тр@хался - дельфя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.