🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346552

Re: Nowy komponent - gdzie Parent?

#346552
From: Krzysztof Szyszka
Date: Mon, 09 Apr 2018 18:29
43 lines
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-mail
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>

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