🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

LiveBindings i TSpinEdit

#334769
From: jh
Date: Thu, 12 Jan 2012 08:01
69 lines
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-mail

Show 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