Jak podmienić wyświetlany tekst w LiveBinding?

0

Witajcie,

Do niedawna korzystałem wyłącznie z Delphi2010 gdzie nie było jeszcze LiveBindingsów. Obecnie testuję kilka rozwiązań w nowym Tokyo i mam następujące pytanie. W nowszych delphi jest możliwość spinania komponentów ze sobą za pomocą LiveBindings Designera gdzie można sobie "wyklikać" np field do labela. Moje pytanie jest następujące czy da się jakoś w tym LiveBingings zrobić coś w rodzaju zdarzenia OnGetText (z fieldów) gdzie przekazywany tekst będzie niejako przez blok kodu zmieniany? Chodzi mi o to, że mam np listview, w nim itemy i obok w zwykłym TLabel.Caption chcę wyświetlać np tylko 3 pierwsze znaki z ListView.SelectedItem. Mogę to wydziergać ręcznie na odpowiednich zdarzeniach ale może da się jakoś tego LiveBindinga zmusić?

0

Nie pomogę tym postem za dużo, ale zastanawia mnie kto tego LB uzywa tak na prawdę...
Przecież to jeszcze bardziej zaciemnia kod niż klepanie wszystkiego w zdarzeniach itp.
Chyba że chodzi o prototypowanie czegoś na szybko. to wtedy tak,
W ogóle pisanie programu, bez kodu - a tym sie embarcadero szczyci przy LB - to jak dla mnie zabawka tylko. No ale to tylko moje przemyślenia.

0

Dla ułatwienia podałem oczywiście przykład z labelem i listview. Problem jaki jest u mnie jest taki, że mam TRestResponse, który nie udostępnia żadnych eventów. Zatem używając livebindinga można sobie łatwo i przyjemnie Response.Content lub Response.JSONValue spiąć np z memo .text. A mi właśnie zależy na tym aby w różnych oknach wyświetlać różne wartości z tego responsa.

0

Ja w sumie robię zarzut co do łączenia strzałkami tych obiektów.
Można robić LB z poziomu kodu i wtedy OK ma to sens, ale jest to słabo udokumentowane, bo Emba woli strzałeczki itp.

Może coś się przyda: Binding

0

Dobra zrobiłem póki co "półautomat" mianowicie, wrzuciłem na formę labela (visible=false) w LB spiąłem TRequest.JSONValue z TLabe1.Caption i oprogramowałem zdarzenie OnAssignedValue obiektu TLinkPropertyToField tam pyknąłem taki drobny kodzik:

var
  vJSONScenario: TJSONValue;
begin
  if Value.AsString <> '' then
  begin
    vJSONScenario := TJSONObject.ParseJSONValue(Value.AsString);
    try
      Button1.Text := vJSONScenario.GetValue<string>('message');
    finally
      vJSONScenario.Free;
    end;
  end;
end;

i działa tak jak chciałem - oczywiście jest to tylko test ale mam w końcu event, w którym mogę reagować na wartości zwracanego z REST'a JSON'a
Jak ma ktoś lepszy pomysł to czekam na sugestie

1 użytkowników online, w tym zalogowanych: 0, gości: 1