Валентин Озеров - Советы по 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 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Prev.Enabled:= true;

ifTBPgFrm(Frms[i]).PgInit thenNext.Enabled:= true

elsePrevClick(Sender);

end elseNext.Enabled:= true;

end;

procedureTPagesDlg.PrevClick(Sender: TObject);

begin

Prev.Enabled:= false;

withPageControl1 do begin

ActivePage:= FindNextPage(ActivePage, false, false);

Prev.Enabled:= ActivePage.PageIndex>0;

end;

Next.Caption:= 'Next';

Next.Enabled:= true;

end;

end.

unitUnit3; //наследник с RadioGroup.

interface

uses...

type TBPgFrm3 = class(TBPgFrm)

RadioValid: TRadioGroup;

public

functionPgValid: boolean; override;

end;

implementation

{$R *.DFM}

functionTBPgFrm3.PgValid: boolean;

begin

result:= RadioValid.ItemIndex=0;

end;

end.

unitUnit4; // наследник с CheckBox.

interface

uses...

type TBPgFrm2 = class(TBPgFrm)

CheckValid: TCheckBox;

public

functionPgValid: boolean; override;

end;

implementation

{$R *.DFM}

functionTBPgFrm2.PgValid: boolean;

begin

result:= CheckValid.Checked;

end;

end.

В Delphi 4 появились новые возможности, в частности, возможность докинга визуальных компонент, в частности, форм, на различные DockSite, в том числе и на TPageControl. Это более удобно. Кроме того, Вы имеете возможность использования TFormLoader из библиотеки VG Library.

IMHO файл *.dfm – это компилированный ресурс с определением установок формы. А можно ли как-то увидеть этот ресуpс в исходном виде?

Nomadicсоветует:

1. File|Open… ТвояФорма.DFM – увидишь текст;

2. «Delphi\bin\convert ТвояФорма.DFM» — получится ТвояФорма.TXT (можно и наоборот).

Идею в массы: в DN/VC/NC можно настроить viewer'ом .DFM .BAT'ник, который скажет convert;wpview;del – и заглядывать в .DFM не открывая Delphi.

Кстати, функции, которые реализуют это преобразование, доступны для использования в личных целях :)

CLASSES.PAS:

[…]

{ Object conversion routines }

procedureObjectBinaryToText(Input, Output: TStream);

procedureObjectTextToBinary(Input, Output: TStream);

procedureObjectResourceToText(Input, Output: TStream);

procedureObjectTextToResource(Input, Output: TStream);

Определение перемещения формы

Кто-нибудь знает как мне определить перемещение пользователем главной формы приложения (не изменение ее размеров), кроме как использования таймера и проверки значений свойств Form.Top и Form.Left?

Вам можно воспользоваться обработчиками следующих системных сообщений:

1. WM_WINDOWPOSCHANGING (возникает перед перемещением),

2. WM_WINDOWPOSCHANGED (возникает после перемещения), или

3. WM_MOVE (возникает после перемещения)

– Robert Wittig

Можно ли сделать так – одновременно иметь на экране всегда доступную форму – например, "Навигатор", и, открывая модальные формы, иметь всегда доступ к форме "Навигатор"?

Nomadicсоветует:

Обманом можно все.

procedureShowAlmostModal(FormModal:TForm);

begin

NavigatorForm.Enabled:=false;

FormModal.ShowModal

end;

И вот это привесь на OnShow почти модальной формы

procedureFormShow(Sender:Tobject);

begin

NavigatorForm.Enabled:=true;

end;

Как создать окна непрямоугольной формы и работать с ними?

Nomadicсоветует:

Достаточно создать регион нужной формы и вызвать SetWindowRgn —

HRGN rgn := CreateEllipticRgn(10,10,100,100);

SetWindowRgn(hMyWnd,rgn); // Вот и будет круглое окно

При этом регион этот теперь используется Windows и будет уничтожен при закрытии окна.

Попробуйте вот этот обpаботчик OnCreate : На меня это произвело впечатление.

procedureTForm1.FormCreate(Sender: TObject);

constW=36*pi/180;

var

R,R1,R2: HRgn;

X,Y,i:integer;

functionS(a:integer;R:integer):integer;

begin

Result:=round(R*sin(W*a));

end;

functionC(a:integer;R:integer):integer;

begin

Result:=round(R*cos(W*a));

end;

functionGetStarReg(X,Y,R:integer):HRGN;

varP : array[0..4] ofTPoint;

begin

P[0] := Point(X, Y-R);

P[1] := Point(X-S(4,R), Y-C(4,R));

P[2] := Point(X-S(8,R), Y-C(8,R));

P[3] := Point(X-S(2,R), Y-C(2,R));

P[4] := Point(X-S(6,R), Y-C(6,R));

Result := CreatePolygonRgn(P, 5, WINDING);

end;

begin

X:=Width div2;

Y:=Height div2;

R:=GetStarReg(X,Y,100);

i:=1;

repeat

R1:=GetStarReg(X-S(i,120),Y-C(i,110),40);

CombineRgn(R,R,R1,RGN_OR);

inc(i,2);

untili>9;

R1:=GetStarReg(X,Y,30);

CombineRgn(R,R,R1,RGN_DIFF);

R1:=CreateEllipticRgn(3,3,Width-6,Height-6);

R2:=CreateEllipticRgn(20,10,Width-20,Height-10);

CombineRgn(R1,R1,R2,RGN_DIFF);

CombineRgn(R,R,R1,RGN_OR);

SetWindowRgn(Handle, R, True);

end;

Как запретить кнопку Close [×] в заголовке окна?

Nomadicсоветует:

Вот кусок, который делает все, что тебе нужно:

procedureTForm1.FormCreate(Sender: TObject);

varStyle: Longint;

begin

Style := GetWindowLong(Handle, GWL_STYLE);

SetWindowLong(Handle, GWL_STYLE, Style And NotWS_SYSMENU);

end;

procedureTForm1.FormKeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);

begin

if(Key = VK_F4) and(ssAlt inShift) then begin

MessageBeep(0);

Key := 0;

end;

end;

{ Disable close button }

procedureTForm1.Button1Click(Sender: TObject);

varSysMenu: HMenu;

begin

SysMenu := GetSystemMenu(Handle, False);

Windows.EnableMenuItem(SysMenu, SC_CLOSE, MF_DISABLED orMF_GRAYED);

end;

{ Enable close button }

procedureTForm1.Button2Click(Sender: TObject);

begin

GetSystemMenu(Handle, True);

Perform(WM_NCPAINT, Handle, 0);

end;

Но это окно можно закрыть из TaskBar'а.

Мерцание формы

Как бы это осуществить рисование в окне без его дурацкого мерцания и без помощи создания виртуального изображения в памяти? WM_SETREDRAW здесь поможет?

Попробуйте этот код. Даже если некоторые компоненты имеют пару BeginUpdate / EndUpdate, то для таких компонентов, как TTreeView, интенсивное рисование может послужить причиной перемещения полосы прокрутки и появления других «барабашек». В таких ситуаций вместо дескриптора элемента управления используйте родительский дескриптор.

procedureBeginScreenUpdate(hwnd : THandle);

begin

if(hwnd = 0) thenhwnd := Application.MainForm.Handle;

SendMessage(hwnd, WM_SETREDRAW, 0, 0);

end;

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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