LibKing » Книги » comp-programming » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

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

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

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

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

ifLongInt(PtrRec(DataPtr).Ofs) + {pазмеp подблока} >l= $FFFF then begin

Move(NEXT_SELECTOR, DataPtr^, SizeOf(NEXT_SELECTOR)); {некая константа}

{ коppекция сегмента }

PtrRec(DataPtr).Seg := PtrRec(DataPtr).Seg + Ofs(AHIncr);

PtrRec(DataPtr).Ofs := $0;

end;

Inc(DataPtr, {pазмеp нового блока});

end; { for i }

GlobalUnlock(Result);

end;

procedureReadData(DataHdl: THandle);

var

DataPtr : PObjectCfgRec;

RecsCount: Integer;

i: Integer;

begin

ifDataHdl = 0 thenExit;

DataPtr := GlobalLock(DataHdl);

RecsCount := PInteger(DataPtr)^;

Inc(PInteger(DataPtr));

fori := 1 toRecsCount do begin

{ обpаботать данные }

Inc(DataPtr);

ifPString(DataPtr)^ = NEXT_SELECTOR then begin

PtrRec(DataPtr).Seg := PtrRec(DataPtr).Seg + Ofs(AHIncr);

PtrRec(DataPtr).Ofs := $0;

end;

end; { for i }

GlobalUnlock(DataHdl);

end;

События

Назначение обработчика события OnClick пункту меню, созданному во время выполнения программы

Delphi 1

Поскольку метод OnClick является свойством, то при динамическом создании элемента меню вы можете назначить имя метода обработчику OnClick:

theMenuitem.OnClick := TheOnClickHandler;

Затем, в обработчике OnClick, вы приводите sender к TMenuItem и читаете имя:

proceduretheform.TheOnClickHandler(Sender: TObject);

var

fName: String;

begin

fName := TMenuItem(Sender).name;

end;

События для компонентов, созданных во время работы программы I

Delphi 1

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

Пример:

TForm1 = class(TForm)

procedureFormCreate(Sender: TObject);

private

FMyButton: TButton;

protected

procedureButton1Click(Sender: TObject);

{Кодируем это вручную,для соответствия}

{структуреTNotifyEvent}

end;

procedureTForm1.FormCreate(Sender: TObject);

begin

FMyButton := TButton.Create;

{Здесь устанавливаем позицию, заголовок и все остальное}

FMyButton.OnClick := MyButtonClick;

end;

procedureTForm1.MyButtonClick(Sender: TObject);

begin

ShowMessage('Эй! Ты нажал на мою кнопку!');

end;

События для компонентов, созданных во время работы программы II

Delphi 1

Вот простейший код для нового проекта с одной кнопкой и меню. (Надеюсь, в этом ничего сложного нет ... :)

procedureTForm1.Button1Click(Sender: TObject);

var

NewItem: TMenuItem;

begin

NewItem := TMenuItem.Create(Form1);

NewItem.Caption := 'Динамический элемент ...';

NewItem.OnClick := xyz;MainMenu1.Items.Insert(0, NewItem); ← Примечание: рекомендую бегло ознакомиться с Delphi-примером для команды Insert…

end;

{Любая старая 'xyz'-процедура (в настоящее время может быть определена одна, например, Form1.DblClick)}

procedureTForm1.xyz(Sender: TObject);

begin

showmessage('Запусти эту процедуру !!');

end;

Примечание: Если вы пользуетесь неопределенной процедурой, вам понадобиться объявить ее. Лично я все это сделал в «верхнем правом углу» объявления типа формы, примерно так:

private

{ Private declarations }

public

{ Public declarations }

procedurexyz(Sender: TObject); ←К этой процедуре могут иметь доступ не только события Form1 …

Установите свойство обработчика события (например, OnClick, OnDblClick, OnMouseDown и пр.) на процедуру, которую вы создали для обработки этого события. Вам нужно убедиться в том, что параметры в точности соответствуют параметрам ожидаемого заданного обработчика события.

Например:

MySpeedButton.OnClick := MyClickEventHandler;

где…

procedureMyClickEventHandler(Sender: TObject);

begin

end;

Массивы

Динамические массивы V

SottNickпишет:

Если хочется, чтобы в многомерном массиве был разный размер у разных измерений например: VarArray: array[1..2, 1..?] of TType , где ? зависит от "строки" массива (1..2)

То дозволяется сделать так:

1. Объявление

Var VarArray: array of array of array…………

2. Установка длин

SetLength(VarArray, Razmernost1); // У первого измерения

SetLength(VarArray[1], Razmernost2); // У второго измерения первой «строки»

SetLength(VarArray[2], Razmernost3); // У второго измерения второй «строки»

SetLength(VarArray[n], Razmernost4); // У второго измерения n-ной «строки»

SetLength(VarArray[1][1], Razmernost5); // У третьего измерения первой «строки» первого «столбца»

SetLength(VarArray[1][2], Razmernost6); // У третьего измерения первой «строки» второго «столбца»

SetLength(VarArray[n][m], Razmernost7); // У третьего измерения n-ной «строки» m-ного «столбца»

т.д.

Все можно изменять в процессе естественно.

3. Получение длин

Razmernost1:=Length(VarArray); // У первого измерения (количество строк)

Razmernost2:=Length(VarArray[1]); // У второго измерения первой «строки» (количество столбцов)

Razmernost3:=Length(VarArray[2]); // У второго измерения второй «строки» (количество столбцов)

Razmernost4:=Length(VarArray[n]); // У второго измерения n-ной «строки» (количество столбцов)

Razmernost5:=Length(VarArray[1][1]); // У третьего измерения первой «строки» первого «столбца»

Razmernost6:=Length(VarArray[1][2]); // У третьего измерения первой «строки» второго «столбца»

Razmernost7:=Length(VarArray[n][m]); // У третьего измерения n-ной «строки» m-ного «столбца»

4. Обращение

VarArray[n][m][o][p][r]:=1; // :Integer // К элементу n-ной «строки», m-ного «столбца», // o-того «?», p-того «?», r-того «?»

5. Обнуление (освобождение памяти)

SetLength (VarArray, 0); // Всех сразу

Динамические массивы VI

Delphi 1

Например, если вам необходимо сохранить «GIZMOS» в вашем массиве, сделайте следующее:

CONST

MaxGIZMOS = $FFFF Div(SizeOf(GIZMOS)) { или что-то другое, смотря какой максимальный размер GIZMOS вы планируете...}

TYPE

pGIZMOArray = ^GIZMOArray;

GIZMOArray = Array[1..MaxGIZMOS] ofGIZMOS;

VAR

TheGIZMOS: pGIZMOArray;

GIZMOcount: integer;

BEGIN

GetMem(TheGIZMOS,(GIZMOcount+1)*SizeOf(GIZMO)); {Нужна дополнительная единица, поскольку массив GetMem ведет отсчет с нуля…}

TheGIZMOS^[index] := Whatever;

ну и так далее…

TList — такой динамический массив. Для получения дополнительной информации обратитесь к электронной справке. Если вы хотите это делать сами, то вам необходимо использовать GetMem для получения указателя на распределенную динамическую память, и затем FreeMem для освобождения памяти, занятой динамическим массивом. Tlist сделает это за вас самым надежным образом.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


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

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img