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

Интервал:

Закладка:

Сделать

begin

CallbackProc := 0; { В противном случае смотрите доказательство }

caseCallType of

xtyp_Register:

begin

{ Ничего ... Просто возвращаем 0 }

end;

xtyp_Unregister:

begin

{ Ничего ... Просто возвращаем 0 }

end;

xtyp_xAct_Complete:

begin

{ Ничего ... Просто возвращаем 0 }

end;

xtyp_Request, Xtyp_AdvData:

begin

Form1.Request(Conv);

CallbackProc := dde_FAck;

end;

xtyp_Disconnect:

begin

ShowMessage('Соединение разорвано!');

Form1.Close;

end;

end;

end;

{ Посылка DDE запроса для получения cf_Text данных с сервера. Запрашиваем данные для всех полей DataSample, и обновляем окно для их отображения. Данные с сервера получаем синхронно, используя DdeClientTransaction.}

procedureTForm1.Request(HConversation: HConv);

var

hDdeTemp : HDDEData;

DataStr : TDataString;

Err, I : Integer;

begin

ifHConversation <> 0 then begin

forI := Low(ItemHSz) toHigh(ItemHSz) do begin

hDdeTemp:= DdeClientTransaction( nil, 0, HConversation, ItemHSz[I], cf_Text, xtyp_Request, 0, nil);

ifhDdeTemp <> 0 then begin

DdeGetData(hDdeTemp, @DataStr, SizeOf(DataStr), 0);

Val(DataStr, DataSample[I], Err);

end; { if }

end; { for }

Paintbox1.Refresh; { Обновляем экран }

end; { if }

end;

procedureTForm1.FormCreate(Sender: TObject);

varI : Integer;

{ Создаем экземпляр окна DDE-клиента. Создаем окно, используя унаследованный конструктор, инициализируем экземпляр данных.}

begin

Inst:= 0;

{ Должен быть нулем для первого вызова DdeInitialize }

CallBackPtr:= nil;

{ MakeProcInstance вызывается из SetupWindow }

ConvHdl:= 0;

ServiceHSz := 0;

TopicHSz:= 0;

forI := Low(DataSample) toHigh(DataSample) do begin

ItemHSz[I]:= 0;

DataSample[I] := 0;

end;

end;

procedureTForm1.FormDestroy(Sender: TObject);

{ Уничтожаем экземпляр клиентского окна. Освобождаем дескрипторы DDE строк, и освобождаем экземпляр функции обратного вызова, если она существует. Также, для завершения диалога, вызовите DdeUninitialize. Затем, для завершения работы, вызовите разрушителя предка. }

varI : Integer;

begin

ifServiceHSz <> 0 thenDdeFreeStringHandle(Inst, ServiceHSz);

ifTopicHSz <> 0 thenDdeFreeStringHandle(Inst, TopicHSz);

forI := Low(ItemHSz) toHigh(ItemHSz) do

ifItemHSz[I] <> 0 thenDdeFreeStringHandle(Inst, ItemHSz[I]);

ifInst <> 0 thenDdeUninitialize(Inst); { Игнорируем возвращаемое значение }

ifCallBackPtr <> nil thenFreeProcInstance(CallBackPtr);

end;

procedureTForm1.RequestUpdate1Click(Sender: TObject);

begin

{ Генерируем запрос DDE в ответ на выбор пункта меню DDE | Request.}

Request(ConvHdl);

end;

procedureTForm1.FormShow(Sender: TObject);

{ Завершаем инициализацию окна сервера DDE. Выполняем те действия, которые требует правильное окно. Инициализируем использование DDEML. }

var

I: Integer;

InitOK: Boolean;

begin

CallBackPtr := MakeProcInstance(@CallBackProc, HInstance);

{ Инициализируем DDE и устанавливаем функцию обратного вызова. Если сервер отсутствует, вызов терпит неудачу. }

ifCallBackPtr <> nil then begin

ifDdeInitialize(Inst, TCallback(CallBackPtr), AppCmd_ClientOnly,0) = dmlErr_No_Error then begin

ServiceHSz:= DdeCreateStringHandle(Inst, DataEntryName, cp_WinAnsi);

TopicHSz:= DdeCreateStringHandle(Inst, DataTopicName, cp_WinAnsi);

InitOK := True;

{for I := Low(DataItemNames) to High(DataItemNames) do begin }

forI := 1 toNumValues do begin

ItemHSz[I]:= DdeCreateStringHandle(Inst, DataItemNames[I], cp_WinAnsi);

InitOK := InitOK and(ItemHSz[I] <> 0);

end;

if(ServiceHSz <> 0) and(TopicHSz <> 0) andInitOK then begin

ConvHdl := DdeConnect(Inst, ServiceHSz, TopicHSz, nil);

ifConvHdl = 0 then begin

ShowMessage('Не могу инициализировать диалог!');

Close;

end

end else begin

ShowMessage('Не могу создать строки!');

Close;

end

end else begin

ShowMessage('Не могу осуществить инициализацию!');

Close;

end;

end;

end;

procedureTForm1.AdviseofChanges1Click(Sender: TObject);

{ Переключаемся на режим DDE Advise с помощью пункта меню DDE | Advise (уведомление). При выборе этого пункта меню все три элемента переключаются на уведомление. }

var

I: Integer;

TransType: Word;

TempResult: Longint;

begin

withTMenuITem(Sender) do begin

Checked := notChecked;

ifChecked thenTransType:= (xtyp_AdvStart orxtypf_AckReq)

elseTransType:= xtyp_AdvStop;

end; { with }

forI := Low(ItemHSz) toHigh(ItemHSz) do

ifDdeClientTransaction( nil, 0, ConvHdl, ItemHSz[I], cf_Text,TransType, 1000, @TempResult) = 0 thenShowMessage('Не могу выполнить транзакцию-уведомление');

ifTransType andxtyp_AdvStart <> 0 thenRequest(ConvHdl);

end;

procedureTForm1.PokeSomeDataClick(Sender: TObject);

{ Генерируем DDE-Poke транзакцию в ответ на выбор пункта меню DDE | Poke. Запрашиваем значение у пользователя, которое будем "проталкивать" в DataItem1 в качестве иллюстрации Poke-функции.}

var

DataStr: pChar;

S: String;

begin

S := '0';

ifInputQuery('PokeData', 'Задайте проталкиваемую (Poke) величину', S) then begin

S := S + #0;

DataStr := @S[1];

DdeClientTransaction(DataStr, StrLen(DataStr) + 1, ConvHdl, ItemHSz[1], cf_Text, xtyp_Poke, 1000, nil);

Request(ConvHdl);

end;

end;

procedureTForm1.exit1Click(Sender: TObject);

begin

close;

end;

procedureTForm1.PaintBox1Paint(Sender: TObject);

{ После запроса обновляем окно. Рисуем график объема текущих продаж.}

const

LMarg = 30; { Левое поле графика }

var

I,Norm: Integer;

Wd: Integer;

Step : Integer;

ARect: TRect;

begin

Norm := 0;

forI := Low(DataSample) toHigh(DataSample) do begin

ifabs(DataSample[I]) > Norm thenNorm := abs(DataSample[I]);

end; { for }

ifNorm = 0 thenNorm := 1; { В случае если у нас все нули }

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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