HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

FolderEdit komponens, mappák elérési útvonalának szerkesztéséhez


Példaprogram letöltése

17206 bájt

Programokban gyakran előfordul, hogy egy elérési útvonalat kell egy adatbeviteli mezőben bekérni a felhasználótól. Ez általában úgy szokott történni, hogy felteszünk egy Edit komponenst, mellé pedig egy Button-t, amivel egy mappa dialógus ablak nyitható. A mellékelt komponenssel egyszerűbb lesz a dolog, mert az Edit tartalmaz egy olyan gombot, amivel egy dialógus ablakot nyithatunk, majd az abban kiválasztott mappa elérési útvonalát beírjuk az Edit-be.
A mellékelt példaprogram megnyitása előtt a FolderEdit.pas-ban lévő komponenst telepítenie kell a Delphi alá.

Mivel itt tulajdonképpen egy speciális Edit komponensről van szó, az új osztályt a TCustomEdit osztályból származtatjuk. Ez az Edit komponens egy SpeedButton komponenst fog tartalmazni. A SpeedButton komponens Align property-jének értékét alRight-ra állítjuk. Ez azért jó, mert ha az Edit komponens mérete megváltozik, akkor a SpeedButton ezt automatikusan követi, így nem kell az átméretezést figyelni, és nem kell a gomb méreteit kiszámítani. Csak egyetlen mérettel kell foglalkoznunk, ez pedig a gomb szélessége, amit a ButtonWidth property-ben lehet módosítani.
Ha már Edit komponenst készítünk, akkor módosítjuk annak néhány tulajdonságát. Például ha az Enabled property értéke megváltozik, akkor nem csak a szöveg színe, hanem a komponens színe is jelzi ezt.
A CreateParams és CreateWnd eljárásokat is felül kell írnunk. Az előbbiben két flag-et kell megadnunk:
  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN;
Az ES_MULTILINE flag-et be kell állítanunk ahhoz, hogy az Edit komponens Text property-jének módosításakor a gomb komponensbe ne töröljön bele. Ekkor viszont az Enter billentyű lenyomásával akár több sort is meg lehetne adni, ami viszont megint nem jó, ezért a Change eljárást is felülírjuk, és gondoskodunk róla, hogy ez ne történhessen meg. Az Enter billentyű lenyomásának eseménye viszont bizonyos esetekben jól használható, ezért létrehozunk egy OnPressEnter eseményt, ami ekkor következik be.
Térjünk vissza a CreateWnd eljáráshoz. Ebben meg kell adnunk azt a területet, ami a tényleges szerkesztő rész területe, ami nem lóghat bele a gomb területébe. Kiszámítjuk ennek a területnek a koordinátáit, majd a SendMessage függvénnyel közöljük ezt az Edit komponenssel:
var
  r: TRect;
begin
  inherited;
  SetRect(r, 0, 0, ClientWidth-FButton.Width-2, ClientHeight);
  SendMessage(Handle, EM_SETRECT, 0, longint(@r));
A konstruktorban megadjuk, hogy az új Edit komponens tartalmazhat más komponenseket is. Ehhez csak a ControlStyle property értékét kell kiegészíteni a csAcceptsControls értékkel.
  ControlStyle:=ControlStyle+[csAcceptsControls];
A gomb OnClick eseményéhez hozzárendeljük a ButtonClick eljárást, amelyben egy dialógus ablakot nyitunk, és a kiválasztott mappa elérési útvonalát beírjuk a Text property-be.



Cikksorozat

#IDKategóriaCikk címeSorozat
3916WindowsA javascript nyelv bemutatása1. rész
3946WindowsJavascript változók és operátorok2. rész
3975WindowsKódvezérlés JScript-ben3. rész
4004WindowsFüggvények és objektumok4. rész
4036WindowsFejlett funkciók a JavaScript nyelvben5. rész
4066WindowsFejlett funkciók a JavaScript nyelvben - folytatás6. rész
4116WindowsReguláris kifejezések7. rész
4145WindowsReguláris kifejezések - folytatás8. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 600. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |