Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аршын апай.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.52 Mб
Скачать

Var j:integer;

dbIM:TDBImage; //Ссылка на компонент, из которого вызвано меню

nmField:string; //Имя поля БД, с которым связан компонент

tmf:TMemoField; //Ссылка на поле БД, с которым связан компонент

begin

nmField:=''; dbIM:=nil;

// Запрет – разрешение пунктов меню:

With MenuClip do begin

Items[1].Enabled := Clipboard.HasFormat(CF_PICTURE); //Вставка

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then begin

nmField:=dbIM.DataField;

tmf:=dbIM.DataSource.DataSet.FieldByName(nmField) as TMemoField;

if tmf<>nil then begin

if tmf.BlobSize>0 then Items[2].Enabled :=True

else Items[2].Enabled :=False; //Копирование

Items[3].Enabled :=Items[2].Enabled; //Вырезка

Items[4].Enabled :=Items[2].Enabled; //Сохранение

Items[5].Enabled :=Items[2].Enabled; //Очистка

end;

end;

//Присвоить номера картинок для пунктов меню:

for j:=0 to Items.Count -1 do

if Items[j].Enabled then Items[j].ImageIndex:=2*j

else Items[j].ImageIndex:=2*j+1;

end;

end;

  1. Программаны жіберіп, оны тексеріңіз. Егер алмасу буферінде графикалық сурет бар болса, онда қою командасы рұқсат етілген болып есептеледі, ал басқа жағдайда тосқауыл қойылған болып есептеледі.

3-қадам. Қалқып шығатын меню командаларын программалау.

  1. Формаға Dialogs терезесінен OpenPictureDialog және SavePictureDialog, компоненттерін орналастырыңыз, содан кейін олардың Name қасиетіне dlgOpenImage және dlgSaveImage мағыналарын меншіктеңіз..

  2. Дизайнер менюінде щелкните по пункту «Открыть» пункті бойынша шертіп, төменде көрсетілген процедураны құрыңыз:

  3. procedure TfmMain.mcOpenClick(Sender: TObject);

Var dbIm:tdbImage;

begin

If Not(dlgOpenImage.Execute) then Exit;

dbIm:=nil;

With MenuClip do

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then begin

if dbIM.DataSource.State <> dsEdit then dbIM.DataSource.Edit;

dbIM.Picture.LoadFromFile(dlgOpenImage.FileName);

dbIM.DataSource.DataSet.Post;

end;

end;

  1. Программаны орындауға жіберіңіз және «Открыть» командасының жұмысын кез- келген сурет арқылы тексеріңіз.

  2. 2-ші пункттегідей етіп менюдің басқа пункттері үшін төменде көрсетілген процедураны құрыңыз:

procedure TfmMain.mcPasteClick(Sender: TObject);

var dbIM:TDBImage;

begin

dbIm:=nil;

With MenuClip do

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then begin

try

dbIm.PasteFromClipboard;

dbIM.DataSource.DataSet.Post;

except

ShowMessage('Буфер не содержит необходимый рисунок.');

end;

end;

end;

procedure TfmMain.mcPasteClick(Sender: TObject);

var dbIM:TDBImage;

begin

if Not(Clipboard.HasFormat(CF_PICTURE)) then Exit;

dbIm:=nil;

With MenuClip do

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then begin

try

dbIm.PasteFromClipboard;

dbIM.DataSource.DataSet.Post;

except

ShowMessage('Ошибка сохранения рисунка.');

end;

end;

end;

procedure TfmMain.mcCopyClick(Sender: TObject);

var dbIM:TDBImage;

begin

dbIm:=nil;

With MenuClip do

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then dbIM.CopyToClipboard;

end;

procedure TfmMain.mcCutClick(Sender: TObject);

var dbIM:TDBImage;nmField:string;

begin

dbIm:=nil;

With MenuClip do

if PopupComponent is TDBImage then dbIM:=(PopupComponent as TDBImage);

if dbIm<>nil then begin

dbIM.CutToClipboard;nmField:=dbIM.DataField;

if dbIM.DataSource.State <> dsEdit then dbIM.DataSource.Edit;

dbIM.DataSource.DataSet.FieldByName(nmField).Clear;

dbIM.DataSource.DataSet.Post;

end;

end;

procedure TfmMain.mcSaveClick(Sender: TObject);