Article View: pl.comp.lang.delphi
Article #334769LiveBindings i TSpinEdit
From: jh
Date: Thu, 12 Jan 2012 08:01
Date: Thu, 12 Jan 2012 08:01
69 lines
3012 bytes
3012 bytes
Oczywiście niesławne XE2 :)
Przenoszę sobie projekt do XE2. W jednym miejscu postanowiłem użyć
TsSpinEdit z pakietu AlphaControls. Dziedziczy on ze standardowego
VCLowego TSpinEdit. A zatem implementuje observatora niezbędnego do
LiveBindings. Utworzyłem sobie TBindScopeDB, mam TBindingList, a w nim
TBindLink, przypisałem ów TsSpinEdit do pola z DataSet
(DataSet->DataSource->BindScopeDB), tworząc odpowiednie wyrażenia do
formatowania, parsowania i zerowania. Niestety działa to tylko w jedną
stronę - TsSpinEdit aktualizuje swoją wartość, natomiast ręczne zmiany
jego wartości nie są uwzględniane w DataSecie, ani nie powodują zmiany
jego stanu (dsBrowse->dsEdit). Analogiczne utworzone LiveBingings dla
TsEdit (dziedziczące z TEdit) działa bez problemu, co więcej - dba o typ
wprowadzanych danych (liczby) z automatu. W obu przypadkach lista
powiązań używa AppManagera (UseAppManager = True). Poniżej kod obu
powiązań. Oczywiście notyfikowanie listy po zmianach TsSpinedit
(OnClick, OnChange): lbMaxListeners.Notify(Sender, '') nic nie daje.
dla TsEdit:
object bndlnkMaxListeners: TBindLink
Category = 'Links'
SourceMemberName = 'MAXLISTENERS'
ControlComponent = edtMaxListeners
SourceComponent = bsdbClassrooms
ParseExpressions = <
item
ControlExpression = 'Text'
SourceExpression = 'AsInteger'
end>
FormatExpressions = <
item
ControlExpression = 'Text'
SourceExpression = 'AsInteger'
end>
ClearExpressions = <
item
ControlExpression = 'Text'
SourceExpression = '"clear"'
end>
end
dla TsSpinEdit:
object bndlnkMaxListenersSE: TBindLink
Category = 'Links'
SourceMemberName = 'MAXLISTENERS'
ControlComponent = seMaxListeners
SourceComponent = bsdbClassrooms
ParseExpressions = <
item
ControlExpression = 'Value'
SourceExpression = 'AsInteger'
end>
FormatExpressions = <
item
ControlExpression = 'Value'
SourceExpression = 'AsInteger'
end>
ClearExpressions = <
item
ControlExpression = 'Value'
SourceExpression = '0'
end>
end
Ma ktoś pomysł?
jh
Technical Details
Message-ID:
<jem40s$o1r$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: jh <no-email@sorry.com> Newsgroups: pl.comp.lang.delphi Subject: LiveBindings i TSpinEdit Date: Thu, 12 Jan 2012 09:01:32 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 69 Message-ID: <jem40s$o1r$1@inews.gazeta.pl> NNTP-Posting-Host: rk-193-19-124-170.kielce.net.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1326355294 24635 193.19.124.170 (12 Jan 2012 08:01:34 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Thu, 12 Jan 2012 08:01:34 +0000 (UTC) X-User: jh0909nowe User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit