Article View: pl.comp.lang.delphi
Article #346552Re: Nowy komponent - gdzie Parent?
From: Krzysztof Szyszka
Date: Mon, 09 Apr 2018 18:29
Date: Mon, 09 Apr 2018 18:29
43 lines
3628 bytes
3628 bytes
> > To skoro tak to czemu TEdit? a nie TDBEdit wtedy masz jeszcze prościej > > bo podpinasz tylko DataSource. Nie wiem jak masz realizowane pobieranie > > danych w tym komponencie ale kieruj się tym że komponent powinien być > > jak najbardziej uniwersalny. > > > > Pozdrawiam > > J-23 > > Tak się właśnie zastanawiam czy TDBEdit byłby lepszy... > Nie za bardzo znajduje pomysł do użycia Bo to nie jest najlepszy pomysł. TDBEdit zapisuje dane do pola tabeli, a Tobie to po co? Ty potrzebujesz tylko okienko do wprowadzenia tekstu filtra. Wystarczy TEdit, albo TComboBox, jeśli chciałbyś pamiętać wszystkie wpisywane wcześniej teksty i umożliwić wybieranie ich z listy. > TEdit używam tylko do przekazania wprowadzonej wartości do ustawienia filtra. Podstawowe działanie > oparłem na OnEditChange: Jeśli chcesz z tego zrobić samodzielny komponent, to podziel temat na dwa zadania: 1. Definiujesz nowe property ListFilter, które przechowuje aktualną treść filtra dla ListSource. Aktualną zawartość ListFilter ustawiasz w przeciążonej metodzie DropDown i usuwasz w metodzie CloseUp, a nie trzymasz ustawionego filtra na ListSource, bo dla innych rekordów możesz mieć dane spoza zakresu filtra i wtedy nie zobaczysz prawidłowej wartości danych w innych rekordach. 2. Do zmiany zawartości ListFilter potrzebujesz osobnej kontrolki edycyjnej np. TEdit, ale nie widzę powodu, żeby ta kontrolka była widoczna cały czas na ekranie. Wystarczy pokazać ją użytkownikowi np. po naciśnięciu F4 i ukryć po wprowadzeniu tekstu filtra i naciśnięciu Enter. Wprowadzony tekst jedynie zmienia aktualny stan ListFilter. Taką kontrolkę możesz utworzyć dynamicznie wtedy, gdy chcesz ją pokazać, najlepiej w tym samym miejscu, co główny komponent (ponad nim). 3. Jeśli jednak będziesz się upierał, żeby treść filtra była cały czas widoczna na ekranie, to musisz utworzyć w konstruktorze TEdit, który będzie się przesuwał wraz z głównym komponentem. Parenta dla TEdit najlepiej ustawić w metodzie SetParent głównego komponentu, ale będziesz musiał pokryć jeszcze kilka innych metod, żeby to sensownie działało w trybie design-time. -- pozdrowienia Krzysztof Szyszka, X-Files Software Developer of X-DBGrid Component Embarcadero Technology Partner http://www.x-files.pl/
Technical Details
Message-ID:
<pagbfr$a2h$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<d38a1d0b-f27f-4f9f-94e5-90043dde49a7@googlegroups.com> <pa7342$eo9$2@node2.news.atman.pl> <e43c3308-4246-44e1-ae77-a4be907dc87f@googlegroups.com> <8d800497-2bc5-47bc-9c96-87dde64a4959@googlegroups.com> <5ac8bc4d$0$31370$65785112@news.neostrada.pl> <23aadf40-3e83-4fc7-82b0-de1270e29017@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: "Krzysztof Szyszka" <nomail@gazeta.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: Nowy komponent - gdzie Parent? Date: Mon, 9 Apr 2018 20:29:57 +0200 Organization: ATMAN - ATM S.A. Lines: 44 Message-ID: <pagbfr$a2h$1@node1.news.atman.pl> References: <d38a1d0b-f27f-4f9f-94e5-90043dde49a7@googlegroups.com> <pa7342$eo9$2@node2.news.atman.pl> <e43c3308-4246-44e1-ae77-a4be907dc87f@googlegroups.com> <8d800497-2bc5-47bc-9c96-87dde64a4959@googlegroups.com> <5ac8bc4d$0$31370$65785112@news.neostrada.pl> <23aadf40-3e83-4fc7-82b0-de1270e29017@googlegroups.com> NNTP-Posting-Host: 89-77-104-79.dynamic.chello.pl Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1523298619 10321 89.77.104.79 (9 Apr 2018 18:30:19 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Mon, 9 Apr 2018 18:30:19 +0000 (UTC) In-Reply-To: <23aadf40-3e83-4fc7-82b0-de1270e29017@googlegroups.com> X-Priority: 3 X-MSMail-Priority: Normal Importance: Normal X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331 X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit