Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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;

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

unitFHintWin;

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

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

usesSysUtils, WinTypes, WinProcs, Classes, Controls, Forms;

typeTFocusHintWindow = class(THintWindow)

private

FShowing: Boolean;

HintControl: TControl;

protected

procedureSetShowing(Value: Boolean);

functionCalcHintRect(Hint: string): TRect;

procedureAppear;

procedureDisappear;

public

propertyShowing: Boolean readFShowing writeSetShowing;

end;

implementation

functionTFocusHintWindow.CalcHintRect(Hint: string): TRect;

varBuffer: array[Byte] ofChar;

begin

Result := Bounds(0, 0, Screen.Width, 0);

DrawText(Canvas.Handle, StrPCopy(Buffer, Hint), -1, Result, DT_CALCRECT orDT_LEFT orDT_WORDBREAK orDT_NOPREFIX);

withHintControl, ClientOrigin doOffsetRect(Result, X, Y + Height + 6);

Inc(Result.Right, 6);

Inc(Result.Bottom, 2);

end;

procedureTFocusHintWindow.Appear;

var

Hint: string;

HintRect: TRect;

begin

if(Screen.ActiveControl = HintControl) thenExit;

HintControl := Screen.ActiveControl;

Hint := GetShortHint(HintControl.Hint);

HintRect := CalcHintRect(Hint);

ActivateHint(HintRect, Hint);

FShowing := True;

end;

procedureTFocusHintWindow.Disappear;

begin

HintControl := nil;

ShowWindow(Handle, SW_HIDE);

FShowing := False;

end;

procedureTFocusHintWindow.SetShowing(Value: Boolean);

begin

ifValue thenAppear elseDisappear;

end;

end.

– Ed Jordan

Вызов 16-разрядного кода из 32-разрядного

Andrew Pastushenkoпишет:

Посылаю код для определения системных ресурсов (как в "Индикаторе ресурсов"). Использовалась статья "Calling 16-bit code from 32-bit in Windows 95".

{ GetFeeSystemResources routine for 32-bit Delphi.

Works only under Windows 9x }

unitSysRes32;

interface

const

//Constants whitch specifies the type of resource to be checked

GFSR_SYSTEMRESOURCES = $0000;

GFSR_GDIRESOURCES = $0001;

GFSR_USERRESOURCES = $0002;

// 32-bit function exported from this unit

functionGetFeeSystemResources(SysResource: Word): Word;

implementation

usesSysUtils, Windows;

type

//Procedural variable for testing for a nil

TGetFSR = function(ResType: Word): Word; stdcall;

//Declare our class exeptions

EThunkError = class(Exception);

EFOpenError = class(Exception);

var

User16Handle : THandle = 0;

GetFSR : TGetFSR = nil;

//Prototypes for some undocumented API

functionLoadLibrary16(LibFileName: PAnsiChar): THandle; stdcall; externalkernel32 index35;

functionFreeLibrary16(LibModule: THandle): THandle; stdcall; externalkernel32 index36;

functionGetProcAddress16(Module: THandle; ProcName: LPCSTR): TFarProc; stdcall; externalkernel32 index37;

procedureQT_Thunk; cdecl; external'kernel32.dll' name'QT_Thunk';

{$StackFrames On}

functionGetFeeSystemResources(SysResource: Word): Word;

varEatStackSpace: String[$3C];

begin

// Ensure buffer isn't optimised away

EatStackSpace := '';

@GetFSR:=GetProcAddress16(User16Handle, 'GETFREESYSTEMRESOURCES');

if Assigned(GetFSR) then //Test result for nil

asm

//Manually push onto the stack type of resource to be checked first

push SysResource

//Load routine address into EDX

mov edx, [GetFSR]

//Call routine

call QT_Thunk

//Assign result to the function

mov @Result, ax

end

else raiseEFOpenError.Create('GetProcAddress16 failed!');

end;

initialization

//Check Platform for Windows 9x

ifWin32Platform <> VER_PLATFORM_WIN32_WINDOWS then raiseEThunkError.Create('Flat thunks only supported under Windows 9x');

//Load 16-bit DLL (USER.EXE)

User16Handle:= LoadLibrary16(PChar('User.exe'));

ifUser16Handle < 32 then raiseEFOpenError.Create('LoadLibrary16 failed!');

finalization

//Release 16-bit DLL when done

ifUser16Handle <> 0 thenFreeLibrary16(User16Handle);

end.

Как проверить, имеем ли мы административные привилегии в системе?

Nomadicпишет:

// Routine: check if the user has administrator provileges

// Was converted from C source by Akzhan Abdulin. Not properly tested.

typePTOKEN_GROUPS = TOKEN_GROUPS^;

functionRunningAsAdministrator(): Boolean;

var

SystemSidAuthority: SID_IDENTIFIER_AUTHORITY = SECURITY_NT_AUTHORITY;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x