Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Then begin 3 page





1. Button1 қасиетінің DragMode қасиетіне dmAutomatic мәнін тағайындайық. Ол оның жылжуын тікелей тышқанның көмегімен асыруға мүмкіндік береді.

2. Пішін тасылатын батырманы қабылдайтындай күйде болатындай шартты ұйымдастырайық. Ол үшін пішіннің OnDragOver оқиғасының өңдеуішін қалыптастырайық.

procedure TForm1.FormDragOver(Sender, Source: TObject;

X, Y: Integer; State: TDragState; var Accept: Boolean);

Begin

Accept:= True; {Оқиға пішіннің жаңа орнына жылжығаннан кейін батырманың босатылуына мүмкіндік береді}

end;

3. Пішінге батырманы тасуды аяқтауда қажетті әрекетті іске асыратын OnDragDrop оқиғасының өңдеуішін құрайық:

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);

Begin

WITH Source AS TButton DO { Source параметрін TButton типіне әкелу, өйткені тасылатын батырма осындай типтен тұрады}

BEGIN

Parent:= Pointer (Sender); {Батырмаға үлкен құрауыш беріледі - Parent қасиетіне Sender (басқару элементі түсірілетін құрауыш) қасиетінің мәні тағайындалады, оны алдын – ала Pointer типіндегі нұсқағышқа айналдырамыз}

Left:= X; {Басқару элементінің сол жақ жоғарғы бұрышының

Top:= Y; координаталарына басқару элементі түсірілген құрауыштың ішіндегі тышқанның көрсеткішінің жергілікті координаталары меншіктеледі

END;

end;

4. Аналогиялық түрде панель үшін OnDragOver және OnDragDrop оқиға өңдеуішін құрастырайық. Олар пішін үшін құрастырылған өңдеуіштерден аттары бойынша ғана өзгеретіндіктен, құрылған әдістерді меншіктеуді қолдануға болады.

5. Батырма үшін оны тасудың басы мен аяғының оқиғасының өңдеуішін құрастырайық (OnStartDrag және OnEndDrag оқиғалары), олар батырманың атын өзгертеді.

procedure TForm1.ButtonStartDrag(Sender: TObject; var DragObject: TDragObject);

Begin

WITH Sender AS TButton DO

BEGIN

Caption:= ’Перемещается’; {Егер тасымалданатын басқару элементі TButton типін немесе TButton типінің ұрпағын иемденсе, онда батырмаға«Перемещается» деген ат беріледі}

END;

end;

6. Аналогиялық түрде батырмаға OnEndDrag оқиғасының өңдеуішін құрайық:

procedure TForm1.ButtonEndDrag(Sender, Target: TObject; X, Y: Integer);

Begin

WITH Sender AS TButton DO

BEGIN

Caption:= ’Не перемещается’; {Егер тасымалданатын басқару элементі TButton типін немесе TButton типінің ұрпағын иемденсе,

онда батырмаға«Не перемещается» деген ат беріледі}

END;

end;

Бұл өңдеуіште Sender - тасыланатын басқару элементі (батырма); Target – тасылатын басқару элементі түсірілген құрауыш (пішін немесе панель).

Зертханалық жұмыс №9 " Экрандық объектілерді сүйреу "

Экрандық объектілерді сүйреу тышқанның көмегімен жеке құрауыштардың арасында ақпаратты тиімді тасымалдауға мүмкіндік береді. Жолды бір тізімнен екінші тізімге сүйреу тетігін мысалда қарастырайық. Жоғарғы жақта жазбасы бар ListBox1 және ListBox2 құрауыштарынан тұратын жоба құрыңыздар. Бірінші тізімді апта аттарының атымен толтырыңыздар. Келесі қадамдар сүйреудің төрт қадамынан тұратын хабарламаны өңдеу мысалдарынан тұрады.

1 этап. Сүйреудің басталуы. Тышқанды сол жақ батырмасына басып жылжытқанда өрбиді. ListBox1 құрауышының DragMode қасиетіне dmAutomatic орнатыңыздар, яғни құрауыш өзіне осы этаптың өңделуін алады. Егер осы қасиетке dmManual орнататын болсақ, онда бағдарлама құрушы сүйреудің басын (мысалы, MouseDown оқиғасы бойынша) және оның тетігін іске қосуды (BeginDrag әдісі) өзі қолмен анықтауы керек болады. Сүйреуді бастау сәтінде құрауыш OnStartDrag оқиғасын өрбітеді. Осы қасиетті өңдеу оқиғасына мына жолды жазыңыздар:

Color:=clRed;

2 этап. Құрауыштан объектіні сүйреу. Тышқанның көрсеткішін құрауыштың үстінен жылжытқанда болатын сүйреуде ол OnDragOver оқиғасын өрбітеді. Осы оқиғаны өңдеудің келесі параметрлерін қарастырайық: Source - объект — сүйреудің көзі, X,Y – тышқанның көрсеткішінің координаталары, Accept – құрауыш сүйреп әкелінген ақпаратты қабылдай ма? жоқ па?, соны анықтайтын буль типтес айнымалы. ListBox2 құрауышының осы оқиғасы үшін келесі жолды жазыңыздар, ол тек ListBox1 құрауышынан ғанасүйреуге рұқсат береді:

Accept:= Source=ListBox1;

3 этап. Ақпаратты толық құрауышқа лақтыру. Құрауыштан тышқанның батырмасын босатқан сәтте орындалатын сүйреу OnDragDrop оқиғасын өрбітеді. Осы оқиғаның өңдеуішіне сүйреу сәйкес келетін қимыл жазылуы керек. Біздің жағдайда ол жолды сол жақ тізіменен оң жақ тізімге тасымалдау қимылы. ListBox2.OnDragDrop оқиғасының өңдеуішіне ListBox1 тізімінде ерекшеленген жолды ListBox2 тізіміне қосатын операторды жазыңыздар:

with ListBox1 do ListBox2.Items.Add(Items[ItemIndex]);

4 этап. Сүйреуді аяқтау. Құрауыш - сүйреудің көзі оны босатқан сәтте OnEndDrag оқиғасын өрбітеді, оның Target параметрі басқа толық құрауышқа сәйкес келеді (біздің жағдайда ListBox2). Бұл оқиғаның өңдеуішіне бірінші тізімнен таңдап алынған жолды жоятын операторды және пішіннің түсін өзгертетін операторды жазыңыздар:

if Target = ListBox2 then
with ListBox1 do Items.Delete(ItemIndex);

Color:= clYellow;

Компиляцияны орындаңыздар және сүйреу тетігінің жұмысын тексеріңіздер.

Өздік жұмысқа тапсырма №9_1

Екі ListBox тізімінен, Edit құрауышынан, Panel құрауышынан, екі батырмадан және төрт жазбадан тұратын жоба құрыңыздар. Берілген жоба келесі функциялардың жұмысын қамтамасыз етуі керек:

· жолды Edit құрауышынан екі тізімге тасымалдау;

· жолды бірінші тізімнен екінші тізімге тасымалдау және керісінше;

· жолды қара панельге сүйреу арқылы жою;

· файлдағы жолды бірінші тізімде оқу;

· екінші тізімнің жолдарын файлға сақтау.

Көп таңдау жасалғанда барлық таңдап алынған жолдарды тасымалдау.

Edit -тен< Ctrl > пернесі басылған тасымал жасалғанда, көшірме алынады (тышқанның көрсеткішінің түрі – crCross).

Өздік жұмысқа тапсырма №9_2

Екі ListBox тізімдерінен, Edit құрауышынан және екі батырмадан тұратын жоба құрыңыздар. Ерекшеленген сөзді тасымал жасағанда орындалатын функцияларды іске асыратын бағдарлама құрыңыздар:

· ListBox1пішін: ListBox1 – дегі сөз қосарланады;

· ListBox2пішін: ListBox2 – дегі сөз жойылады;

· ListBox1 ListBox2: сөздердің қарапайым тасымалдануы;

· ListBox1Edit1, ListBox2  Edit1: сөздердің орынмен ауысуы;

· Edit1ListBox1, Edit1ListBox2: тышқанның сол жақ пернесі – тасымал, оң жағы – сөздің көшірмесі.

· ListBox1 (ListBox2)Button1: файлдан барлық тізімді оқу;

· ListBox1 (ListBox2)  Button2: барлық тізімді файлға сақтау.

Көп таңдау жасалғанда барлық таңдап алынған жолдарды тасымалдау.

Edit1 – ден көшірмесін алғанда тышқанның көрсеткішінің түрі – crCross.

Ұсыныс:

Edit1 – ден сүйреудің бастамасын өңдеуді қолмен ұймдастырыңыздар, яғни Edit1.DragMode=dmManual орнатыңыздар және Edit1.OnMouseDown өңдеуішіне келесіні жазыңыздар (бұл толық емес):

if (Button=mbLeft) and (Edit1.Text<>'') then
Edit1.BeginDrag(False);

 

3.5 Диалог терезелері. Dialogs парағындағы Delphi құрауыштары (Open Dialog, Save Dialog, Font Dialog және т.б.)

Windows жанұясының операциялық жүйелері файлды ашуға және сақтауға, қаріпті, түсті, принтерді және басқаларды таңдауға және баптауға тағайындалған стандартты диалог терезелерінен тұрады. Delphi ортасы да стандартты диалог терезелерінен тұрады. Ол үшін Delphi – дің құрауыштар кітапханасында өз кезегінде тікелей TComponent класының ұрпақ класы болып келетін TCommonDialog (Жалпы диалог) бір ата – тек класына қатысты арнайы кластар анықталған. Диалог терезелері көрнекілік емес құрауыштардың мысалы болып табылады. Бұны мынадан байқауға болады, конструктірлеу кезеңінде пішінге орналастырылатын құрауыштың сыртқы көрінісі бағдарламаның орындалу барысындағы диалог терезесінің сыртқы көрінісімен сай келмейді.

Delphi - дің диалог терезелерін жүзеге асыру ерекшелігі олардың Windows жанұясының операциялық жүйесіндегі стандартты мүмкіншіліктерді қолдануы болады. Мысалы, Delphi - дің диалог терезелері операциялық жүйеде қолданылатын тілдегі ақпараттан тұрады.

Dialogs – Құрауыштар Палитрасындағы стандартты диалогтардың парағы.

Open Dialog – ашылатын файлдың атын таңдауға тағайындалған диалог терезелері.

Иерархиясы:

TObjectTPersistentTComponentTCommonDialog.

Ашылатын файлдың атын таңдауға арналған диалог терезелері TOpenDialog класының данасы болып табылады. Ол компьютердің файлдық жүйесін көруге және керекті файлдың атын таңдауға тағайындалған (3.5.1 суретін қараңыздар).

Байқағандарыңыздай Open Dialog құрауышы файлды автоматы түрде ашуға тағайындалмаған. Ол тек қолданушының таңдаған файлының атын ғана алуға мүмкіндік береді. Файлды тікелей ашу Object Pascal тілінің стандартты процедураларының көмегімен немесе арнайы әдістермен жүзеге асырылады. Мұндай әдістер мысалы TStrings класында анықталған.

TOpenDialog класының негізгі қасиеттерін қарастырайық.

property DefaultExt: String – егер файлдың кеңейткіші көрсетілмесе оның атына қосылып жазылатын кеңейткіштен тұрады. Бөлетін нүктені қоспағанда үш символдан тұруы мүмкін.

property FileName: TFileName;

Type

TFileName = String;

Ол таңдап алынған файлдың атынан тұрады. Ол ат диалог терезесінің Имя файла: (File Name:) жолына орналастырылады.

property Files: TStrings – ерекшеленген файлдардың аттарының тізімінен тұрады. Қасиет тек оқуға ғана тағайындалған.

property Filter: String – бір немесе бірнеше файлдық сүзгілердің сипаттамасынан тұрады. Файлдық сүзгі – арнайы символдардан тұратын файлдың атының (файлдың қалқасы) бір немесе бірнеше шаблоны. Мысалы, *.pas қалқасы қолданушыға диалог терезесінде тек қана .pas кеңейткіші бар файлдарды ғана бейнелеуге көмектеседі. Filter қасиетінде көлбеу сызықтармен бөлінген бірнеше символдар тізбегінің жұбы болуы мүмкін. Әрбір осындай жұп бір файлдық сүзгіге сай келеді және өз кезегінде көлбеу сызықпен бөлінген екі бөліктен тұрады. Бірінші бөлік берілген сүзгі үшін диалог терезесінің Тип файлов: (Files of type:) аралас жолында шығатын мәтінді береді, ал екінші бөлім сүзгінің өзінен тұрады. Сүзгі үтір мен нүкте арқылы аударылған файл қалқасын береді. Мысалы, оператордың орындалуының нәтижесінде

OpenDialog1.Filter:= Delphi модульдерінің файлдары(*.pas)|*.pas|' +

'Мәтіндік құжаттар (*.txt, *.doc)|*.txt;*.doc';

диалог терезесінің Тип файлов: аралас жолы екі жолдан тұратын болады:

Delphi модульдерінің файлдары (*.pas)

және

Мәтіндік құжаттар (*.txt, *.doc)

Бірінші жолға *.pas файлдық сүзгі, ал екінші жолға *.txt; *.doc файлдық сүзгі сай келеді. Сәйкес бірінші сүзгіні таңдағанда файлды ашу диалог терезесінде .pas кеңейткіші бар файлдар ғана бейнеленеді, ал екінші сүзгіні таңдағанда - .txt немесе .doc кеңейткіші бар файлдар бейнеленеді.

Пішінді конструктірлеу кезеңінде Объект Инспектірінен осы қасиетті таңдағанда көмекші терезе ашылады, оның көмегімен көлденең бөлгіш сызықтарды жазбай – ақ сүзгінің мәтінін және сүзгінің өзін беруге болады. property FilterIndex: Integer – диалог терезесі ашылғанда үнсіздікпен сүзгінің қандай элементі көрсетілетінін анықталады. Элементтерді нөмірлеу бір санынан басталады. Әдетте сүзгінің бірінші элементі қолданылады.

property InitialDir: String – құрамы диалог терезесі ашылғанда пайда болатын қапшықты анықтайды. Егер осы қасиеттің мәні тағайындалмаса, онда ағымды қапшық немесе қолданушының диалог терезесіне соңғы рет қатынағанда ашылған қапшық ашылады.

property Title: String – диалог терезесінің тақырыбын береді.

property Options: TOpenOptions;

Type

TOpenOption = (ofReadOnly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofShowHelp, ofNoValidate, ofAllowMultiSelect, ofExtensionDifferent, ofPathMustExist, ofFileMustExist, ofCreatePrompt, ofShareAware, ofNoReadOnlyReturn, ofNoTestFileCreate, ofNoNetworkButton, ofNoLongNames, ofOldStyleDialog, ofNoDereferenceLinks);

TOpenOptions = set of TOpenOption;

Ол диалог терезесінің сипаттамасын орнатады және мән ретінде келесі шамалардың кез – келгенін ала алады:

ofReadOnlyТолько для чтения файлының ашылуының қосқышын береді (орнатады),

ofOverwritePrompt – файлды сақтағанда хабарлама шығады, егер мұндай файл бар болатын болса, онда файлды ауыстыруға растауды сұрайды,

ofHideReadOnlyТолько для чтения файлының ашылуының қосқышын тығып қояды (үнсіздікпен беріледі),

ofFileMustExist – бұл мән берілгенде тек бар файлдарды ғана беруге болады, қарсы жағдайда файл жоқ деген хабарлама шығады,

ofNoReadOnlyReturn – бұл параметр берілгенде Только для чтения файлын таңдағанда файлды ашуға болмайды деген хабарлама шығады,

ofAllowMultiSelect – бірден көп файлдарды ерекшелеуге мүмкіндік береді.

Файлды ашу диалог терезесін қолданғанда ерекше орынды TOpenDialog класында анықталған Execute әдісі алады.

function Execute: Boolean; override;

Диалог терезесін экранға модальды режимде орналастырады. Модальды режим дегеніміз - қосымшаның орындалуы қолданушы модальды терезені жаппағанша тоқтамайды. Функция True мәнін қайтарады, егер терезе Открыть батырмасы арқылы жабылса, және False, егер Отмена батырмасы арқылы жабылса.

TOpenDialog класында OnFolderChange, OnSelectionChange және OnTypeChange оқиғалары анықталған:

property OnFolderChange: TNotifyEvent;

Диалог терезесінің көмегімен қандай да бір қапшық ашылғанда немесе жабылғанда өрбиді.

property OnSelectionChange: TNotifyEvent;

Ерекшеленген файл өзгергенде өрбиді.

property OnTypeChange: TNotifyEvent;

Берілген сүзгі бойынша анықталған, диалог терезесінде бейнеленетін файлдардың типі өзгергенде өрбиді.

Мысал 3.5.1 Button1 құрауышының OnClick оқиға өңдеуіші ашылатын файлдың атын таңдауға арналған диалог терезесін ашады және таңдап алынған файлдың бірінші жолын Edit1 құрауышына орналастырады.

procedure TForm1.Button1Click(Sender: TObject);

var F: TextFile;

S: String;

Begin

IF OpenDialog1.Execute THEN {Экранға файлды ашу диалог терезесін шығару}

BEGIN { Егер терезе Открыть батырмасы арқылы жабылған болса, онда... }

{ Диалог терезесінің файл атында таңдап алынған атты файлдық айнымалымен байланыстыру}

AssignFile(F,OpenDialog1.FileName);

Reset(F); { Файлды ашу }

Readln(F,S); { Файлдан бірінші жолды S жолдық айнымалысына есептеу }

Edit1.Text:=S; { Edit1құрауышындағы S жолын шығару }

CloseFile(F); { Файлды жабу }

END;

end;

Мысал 3.5.2 Button2 құрауышы үшін OnClick оқиға өңдеуіші ашылатын файлдың атын таңдауға арналған диалог терезесін ашады және файлдың мәтінін Memo1 құрауышына орналастырады.

procedure TForm1.Button2Click(Sender: TObject);

var fFileName: TfileName;

Begin

WITH OpenDialog1 DO

BEGIN

Filter:= 'All files|*.*'+'Text files|*.txt,*.doc';

FilterIndex:= 2;

IF Execute THEN

BEGIN

{Таңдап алынған файлды Memo1 құрауышында ашады}

Memo1.Lines.LoadFromFile(FileName);

{ fFileName айнымалысына таңдап алынған файлдың толық атын жазу}

fFileName:= OpenDialog1.FileName;

{Файлдың толық атын пішіннің тақырыбына шығару}

Form1.Caption:= fFileName;

{Label1 құрауышына толық атынан бөліп алып, дискі және каталогтың атынсыз файлдың атын шығару}

Label1.Caption:= ExtractFileName(fFileName);

END;

END;

end;

Save Dialog – сақталатын файлдың атын таңдау диалог терезесі.

Иерархиясы:

TObjectTPersistentTComponentTCommonDialogTOpenDialog.

Save Dialog диалог терезесі Open Dialog терезесіне өте ұқсас, бірақ одан айырмашылығы ол файлды сақтауда қолданылады (сурет 3.5.2 көріңіздер).

Сақталатын файлдың атын таңдау диалог терезесі TOpenDialog класынан туындаған және оның барлық сипаттамаларына ие болатын TSaveDialog класының данасы болып табылады.

TSaveDialog класында TOpenDialog класының аналогиялық функциясы атқаратын іс - әрекетті орындайтын өзінің Execute функциясы анықталған.

Өздерінің құрылымдары және сыртқы бейнесі бойынша Save Dialog және Open Dialog диалог терезелерінің айырмашылықтары аз ғана.

Мысал 3.5.3 Button2 құрауышы үшін OnClick оқиға өңдеуіші сақталатын файлдың атын таңдауға арналған диалог терезесін ашады және Memo1 құрауышындағы мәтінді осы файлға сақтайды.

procedure TForm1.Button2Click(Sender: TObject);

Begin

IF SaveDialog1.Execute THEN

BEGIN

Form1.Caption:= SaveDialog1.FileName;

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

END;

end;

Font Dialog – қаріпті таңдау диалог терезесі.

Иерархиясы:

TObjectTPersistentTComponentTCommonDialog.

Қаріпті таңдау Font Dialog диалог терезесі қолданушыға қаріпті таңдауға және оның сипаттамаларын орнатуға мүмкіндік береді (сурет 3.5.3 қараңыздар).

Font Dialog құрауышы тікелей TCommonDialog класынан туындаған TFontDialog класының данасы болып табылады.

TFontDialog класының негізгі қасиеттерін қарастырайық.

property Device: TFontDialogDevice;

Type

TFontDialogDevice = (fdScreen, fdPrinter, fdBoth);

Ол қандай құрылғы үшін қаріп тағайындалатынын анықтайды. Келесі мәндерді қабылдауы мүмкін:

fdScreen – экран үшін қаріп,

fdPrinter – принтер үшін қаріп,

fdBoth – экран және принтер үшін қаріп.

Үнсіздікпен қаріп экран үшін беріледі.

property Font: TFont – қаріптің сипаттамаларын береді. Мәтінді бейнелеу үшін Windows операциялық жүйесінде тіркелген көптікке тиісті қаріп қолданылады.

property Options: TFontDialogOptionsTFontDialogOptions типті қасиет:

Type

TFontDialogOption = (fdAnsiOnly, fdTrueTypeOnly, fdEffects, fdFixedPitchOnly, fdForceFontExist, fdNoFaceSel, fdNoOEMFonts, fdNoSimulations, fdNoSizeSel, fdNoStyleSel, fdNoVectorFonts, fdShowHelp, fdWysiwyg, fdLimitSize, fdScalableOnly, fdApplyButton);

TFontDialogOptions = set of TFontDialogOption;

Ол диалог терезесінің сипаттамаларын береді және мәні ретінде келесі шамалардың көптігін қабылдай алады:

fdAnsiOnly – бұл параметр тағайындалғанда символдары Windows операциялық жүйесінің көптік символдарына кіретін қаріпті ғана таңдауға болады,

fdEffects – бұл параметр тағайындалғанда диалог терезесі қаріптің астын сызуды және қайта сызуды анықтайтын Effects терезесінен және қаріптің түсін анықтайтын Color терезесінен тұрады,

fdForceFontExist – бұл параметр тағайындалғанда және жоқ қаріптің атын енгізгенде дұрыс енгізілмеген туралы хабарлама шығады,

Date: 2015-07-01; view: 544; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию