Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 No:String;

begin

 R:=TRegistry.Create;

 R.RootKey:=HKEY_LOCAL_MACHINE;

 R.OpenKey('….', false) {если false то пытается откpыть не создавая}

 No:=R.ReadString('VersionNumber');

 if no=….. then …… else ……

end;

Выше был приведён кусочек из Windows 95/98 Registry. В Windows NT эта ветвь находится в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]

Кроме того, обязательно посмотрите на список функций WinAPI, имена которых начинаются с Get…. Например, GetComputerName, GetVersionEx, GetSystemInfo, SystemParametersInfo.

Ярлыки (ShortCuts) 

Создание ярлыков

VRSLazy@mail.ru пишет:

Может ещё так можно ярлыки делать?

uses … ShlObj, ComObj, ActiveX, shellapi, ComCtrls, ... // не помню какая из них нужна, вообще наити можно поиском в *.pas в каталоге

// disk:\Program Files\Borland\Delphi5\Source

procedure SetShortCut(path, cmd, icon, wd, name, arg : String);

var

 ShellObject:IUnknown;

 LinkFile:IPersistFile;

 ShellLink:IShellLink;

begin

 Try

CoInitialize(nil);

ShellObject:=CreateComObject(CLSID_ShellLink);

LinkFile:=ShellObject as IPersistFile;

ShellLink:=ShellObject as IShellLink; // RTFM - интерфейсу IShellLink, там всё описано

ShellLink.SetPath(@cmd[1]);

ShellLink.SetWorkingDirectory(@wd[1]);

ShellLink.SetIconLocation(@icon[1], 0); // вместо 0 можно указать номер иконки если их там много…

ShellLink.SetDescription(@name[1]);

ShellLink.SetArguments(@arg[1]);

LinkFile.Save(PWChar(WideString(path)),true);

 finally

ShellObject:=Unassigned;

CoUninitialize;

 end;

end;

Разное 

`Устойчивые` всплывающие подсказки

На TabbedNotebook у меня есть множество компонентов TEdit. Я изменяю цвет компонентов TEdit на желтый и назначаю свойству Hint компонента строчку предупреждения, если поле редактирования содержит неверные данные.

Поведение окна со всплывающей подсказкой (hintwindow) позволяет делать его видимым только тогда, когда курсор мыши находится в области элемента управления. Но мой заказчик хочет видеть подсказки все время, пока поле редактирования имеет фокус.

Я не знаю как изменить поведение всплывающей подсказки, заданное по умолчанию. Я знаю что это возможно, но кто мне подскажет как?

Ниже приведен модуль, содержащий новый тип hintwindow, TFocusHintWindow. Когда вы "просите" TFocusHintWindow появиться,

он появляется ниже элемента управления, имеющего фокус. Для показа и скрытия достаточно следующих команд:

FocusHintWindow.Showing := True;

FocusHintWindow.Showing := False;

Пример того, как это можно использовать, содержится в комментариях к модулю. Это просто.

unit FHintWin;

{ -----------------------------------------------------------

 TFocusHintWindow --

 Вот пример того, как можно использовать TFocusHintWindow.

 Данный пример выводит всплывающую подсказку ниже любого

 TEdit, имеющего фокус. В противном случае выводится

 стандартная подсказка Windows.

unit Unit1;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FHintWin;

type TForm1 = class(TForm)

 procedure FormCreate(Sender: TObject);

private

 FocusHintWindow: TFocusHintWindow;

 procedure AppIdle(Sender: TObject; var Done: Boolean);

 procedure AppShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);

end;

implementation

procedure TForm1.FormCreate(Sender: TObject);

begin

 Application.OnIdle := AppIdle;

 Application.OnShowHint := AppShowHint;

 FocusHintWindow := TFocusHintWindow.Create(Self);

end;

procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);

begin

 FocusHintWindow.Showing := Screen.ActiveControl is TEdit;

end;

procedure TForm1.AppShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);

begin

 CanShow := not FocusHintWindow.Showing;

end;

end.

– ---------------------------------------------------------- }

interface

uses SysUtils, WinTypes, WinProcs, Classes, Controls, Forms;

type TFocusHintWindow = class(THintWindow)

private

 FShowing: Boolean;

 HintControl: TControl;

protected

Поделиться с друзьями: