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

ЖАНРЫ

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

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

Шрифт:

end else begin

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

Close;

end;

 end;

end;

procedure TForm1.AdviseofChanges1Click(Sender: TObject);

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

var

 I: Integer;

 TransType: Word;

 TempResult: Longint;

begin

 with TMenuITem(Sender) do begin

Checked := not Checked;

if Checked then TransType:= (xtyp_AdvStart or xtypf_AckReq)

else TransType:= xtyp_AdvStop;

 end; { with }

 for I := Low(ItemHSz) to High(ItemHSz) do

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

 if TransType and xtyp_AdvStart <> 0 then Request(ConvHdl);

end;

procedure TForm1.PokeSomeDataClick(Sender: TObject);

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

var

 DataStr: pChar;

 S: String;

begin

 S := '0';

 if InputQuery('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;

procedure TForm1.exit1Click(Sender: TObject);

begin

 close;

end;

procedure TForm1.PaintBox1Paint(Sender: TObject);

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

const

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

var

 I,Norm: Integer;

 Wd: Integer;

 Step : Integer;

 ARect: TRect;

begin

 Norm := 0;

 for I := Low(DataSample) to High(DataSample) do begin

if abs(DataSample[I]) > Norm then Norm := abs(DataSample[I]);

 end; { for }

 if Norm = 0 then Norm := 1; { В случае если у нас все нули }

 with TPaintBox(Sender).Canvas do begin

{ Рисуем задний фон }

Brush.color:= clWhite;

FillRect(ClipRect);

{ Рисуем ось }

MoveTo(0, ClipRect.Bottom div 2);

LineTo(ClipRect.Right, ClipRect.Bottom div 2);

MoveTo(LMarg, 0);

LineTo(LMarg, ClipRect.Bottom);

{ Печатаем текст левого поля }

TextOut(0, 0, IntToStr(Norm));

TextOut(0, ClipRect.Bottom div 2, '0');

TextOut(0, ClipRect.Bottom + Font.Height, IntToStr(-Norm));

TextOut(0, ClipRect.Bottom div 2, '0');

TextOut(0, ClipRect.Bottom div 2, '0');

TextOut(0, ClipRect.Bottom div 2, '0');

{ Печатаем текст оси X }

{ Теперь рисуем бары на основе нормализованного значения. Вычисляем ширину баров (чтобы они все вместились в окне) и ширину пробела между ними, который приблизительно равен 20% от их ширины. }

{ SelectObject(PaintDC, CreateSolidBrush(RGB(255, 0, 0)));

SetBkMode(PaintDC, Transparent);}

ARect := ClipRect;

Wd := (ARect.Right - LMarg) div NumValues;

Step := Wd div 5;

Wd := Wd - Step;

with ARect do begin

Left := LMarg + (Step div 2);

Top := ClipRect.Bottom div 2;

end; { with }

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