Mulți practicanți Delphi-programatori știu că TSplitter'a standard au o serie de dezavantaje (de exemplu bug-uri, dacă vă spun deschis). Într-un efort de a combate erorile TSplitter'a standardului, precum și dorința de a „lega“ la butonul splitter (pentru a ascunde / afișa panoul asociat), am încercat o dată mai multe componente (disponibil pentru download gratuit), dar pe nimic nu în mod specific oprit: toate opțiunile au fost ceva ce nu am nevoie. În cele din urmă, am decis să scriu propria mea componentă.
Așadar, vă aduc la cunoștință componenta VCL: TdnSplitter. Aceasta este o altă clonă a divizorului, dar are caracteristici distinctive. Cel mai important lucru este că TdnSplitter nu este un moștenitor de la TSplitter. Prin urmare, nu moșteneste problemele TSplitter. TdnSplitter este creat ca o componentă separată.
Iată o listă a proprietăților distinctive ale componentei.
- TdnSplitter moștenită de la TCustomControl (care, la rândul său, moștenită de la TWinControl), spre deosebire de TSplitter, care a moștenit TGraphicControl.
- AlignControl proprietate. Această proprietate este specificată explicit (sau determinată automat în Design-Time). Din acest motiv, pierderea aleatoare a componentei legate de splitter este imposibilă în principiu.
- Proprietatea IsSnapped. Aflați dacă componenta asociată este ascunsă prin proprietatea booleană. Prin aceeași proprietate, puteți ascunde / afișa componenta asociată.
- Proprietatea ControlSize. Această proprietate vă permite să învățați (sau să schimbați) lățimea componentei asociate (sau înălțimea - în funcție de locație).
- Există un buton pentru ascunderea / afișarea componentei asociate. Pentru acest buton, puteți specifica sugestii și câțiva alți parametri care sunt responsabili pentru aspect.
- AllowDrag proprietate vă permite să dezactivați resize prin glisarea componenta asociată (de exemplu, este posibil să se lase doar un buton și un splitter va avea doar două poziții. - a se vedea IsSnapped proprietate).
- Proprietatea Action. TdnSplitter poate fi asociat cu acțiunea. Dacă utilizați acțiunile, atunci veți înțelege de ce este necesar acest lucru.
Datorită proprietăților IsSnapped și ControlSize, este ușor să salvați și să restabiliți starea splitterului și a componentei sale asociate.
Captură de ecran din aplicația reală:
In imagine două splitter: primul „descoperit“ (puteți vedea panoul „Dosare“ și prezintă un indiciu de sub cursorul mouse-ului), a doua (conexiunile panoului de pe partea dreapta) „ascunse“.
Componenta este scrisă în mediul Delphi 7 și ar trebui să funcționeze fără probleme în versiunile ulterioare ale Delphi.
P.S. Ca dezvoltare a componentei, am avut o astfel de idee: atunci când ascundeți componenta asociată, este evident să-i schimbați vizibilitatea (vizibilă), în loc să schimbați dimensiunea acesteia la 0 (așa cum este acum). Cu toate acestea, în practică, nu am avut nevoie de acest lucru în mod special și, până în prezent, rămâne așa cum este.
P.P.S. În Design-Time, când aruncați Splitterul pe formular și modificați legătura acestuia, splitterul nu poate fi corect setat la o dimensiune externă. Nu te speria :). Este suficient să setați / verificați proprietățile Align, AlignControl și Size. Deoarece acest lucru este rar și numai în Design-Time la momentul configurației componentelor, nu m-am deranjat (mă mărturisesc!). Prin corectarea acestei mici ... "erori" :).
P.P.S. În ciuda problemei minore cu componenta Design-Time, sper foarte mult ca acest post să participe la concursul delphifeeds.ru.