AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi [FMX] Combobox per Code mit Daten füllen
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] Combobox per Code mit Daten füllen

Ein Thema von Devil1925 · begonnen am 7. Feb 2017 · letzter Beitrag vom 17. Feb 2017
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 13:38
Danke für Deine Mühe! Werde ich sofort mal umsetzen und jetzt noch eine Frage für die Verständlichkeit meinersets...

Wenn ich jetzt das Control Frei gebe, wird dann auch alles andere Freigegeben? also BindsourceDB, Bindingslist und LinkListControl?
Gibt es einen besonderen Grund, warum Du es unbedingt - wenn du es eh schon im Source machst - über die Livebindings machen willst?

Abgesehen von den ganzen lokalen Variablen inkl. der Datenbank Geschichten?
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 13:57
Ich kenn in FMX als Möglichkeit nur die Livebindings, wenn du noch andere (bessere?) Methoden kennst, lasse ich mich gerne Aufklären

für mich sieht die Methode des durchlaufens der Query in einer Schleife (First, Next) halt danach aus, als wäre es deutlich langsamer als die LiveBindings. Ausserdem kann ich dann doch direkt (bei z.B. Edit-Feldern) den geänderten Wert per "Post" in die Datenbank schreiben. Wenn ich da einen Denkfehler habe, so kläre mich doch bitte auf

Danke
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#3

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 14:36
Das hier ist auch ganz sehenswert zu LB.

LB per Code funktioniert bei mir auch ganz gut.
Habe allerdings auch kaum anspruchsvolle DB im Mobilteil, unter Sqlite.
Ist mir auch sympatischer als das LB-Editor Stripenziehen.
Wenn da mal was verrutscht (z.B. bei Updates) dann ist die Übersicht komplett vorbei.

Um damit auf die Art aber größere DB-Projekte zu machen ... naja ...
wäre ich zumindest vorsichtig

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 17:09
Ich kenn in FMX als Möglichkeit nur die Livebindings, wenn du noch andere (bessere?) Methoden kennst, lasse ich mich gerne Aufklären

für mich sieht die Methode des durchlaufens der Query in einer Schleife (First, Next) halt danach aus, als wäre es deutlich langsamer als die LiveBindings. Ausserdem kann ich dann doch direkt (bei z.B. Edit-Feldern) den geänderten Wert per "Post" in die Datenbank schreiben. Wenn ich da einen Denkfehler habe, so kläre mich doch bitte auf

Danke
Besser ist immer so eine Frage... Ich würde es nur so NIE machen...

Delphi-Quellcode:
Procedure TForm14.FillCombobox(Const ACB : TCombobox;Const AFieldName : String);
var
  LBI : TListBoxItem;
  LEntries : ICanHandleDBListFields;
  i : Integer;
begin
  LEntries := Database.GetListFields(AFieldName);

  ACB.BeginUpdate;
  ACB.Clear;
  try
    for i:=0 to LEntries.count-1 do
      begin
        LBI := NewListBoxEntry; // Erzeugt eine LBI mit Height=49 Stylelookup='listboxitembottomdetail' usw.
        LBI.Text := LEnties.Items[i].Text;
        LBI.Detail := LEnties.Items[i].Detail;
        LBI.Parent := ACB;
      end;
  finally
    ACB.EndUpdate;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.538 Beiträge
 
Delphi 12 Athens
 
#5

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 18:02
Wenn die Owner richtig gesetzt sind, dann wird alles automatisch freigegeben.

Und jup, in FMX gibt es keine DB-affinen Controls, da muß man alles irgendwie anders Binden.
TDBEdit und Co. gibt es standardmäßig nur in der VCL und das sind auch nur TEdit, wo ein TDataLink intern dran hängt, der sowas wie das LiveBinding macht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#6

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 19:21
Hallo Mavarik,

das ist auch nur ein Teil der Lösung.
Wenn es richtig bidirectional arbeiten soll, und z.B. auch auf
Updates von anderswoher reagieren soll wird es recht unangenehm.

Ich versuche erstmal mit LB zu leben und mich damit anzufreunden.
Funktionieren tut es in etwa, nur würde ich nicht zuviel erwarten bei komplexen Projekten.
Ich gehe aber stark davon aus das es in Zukunft weiter entwickelt wird, und einen
echten Ersatz für DB-Controls werden wird.
Zumal es ja auch unter VCL arbeitet wird das wohl so etwas wie Embas ORM-Lösung werden.
Ich bin gespannt.

Gibt es vielleicht 3rd-Party Controls die man besser für DB+FMX Binding nutzen sollte ?
Da weiss ich im Moment aber auch keine.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 21:54
Hallo Mavarik,

das ist auch nur ein Teil der Lösung.
Wenn es richtig bidirectional arbeiten soll, und z.B. auch auf
Updates von anderswoher reagieren soll wird es recht unangenehm.
Nö eigentlich nicht...

Seit ich MVVM für mich entdeckt habe stellt sich diese Frage irgendwie nicht mehr...

Was soll meine View mit irgend einer Datenbank Komponente?

Meine View macht nur das was sie soll... Mein ViewModel steuert das... Mein Model kennt die Daten und bekommt entweder über eine Factory oder
über den Constructor ein CRUD Interface für die Datenbank...

Alle getrennt, alles schick, alles testbar...

Abgesehen davon, dass es in den Schichten somit viel mehr Threading Möglichkeiten gibt, was das etwas mehr Kommunikationsoverhead deutlich wett-macht.
Somit ist alles schneller...

Mavarik
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#8

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 17. Feb 2017, 06:30
Wenn der View nicht die Arbeit macht dann eben das ViewModel.
Irgendwo musst du ja die Logik reinbauen.
Womöglich hast du Wrapper-Klassen für jede Komponente, die das dann optimal machen.
Das wäre ja OK.

Vom Code unten frage ich mich wie du das machst wenn nur ein Record in
die DB "inserted" wird ?
Immer die ganze ComboBox neuanlegen/neuzeichnen lassen, oder lässt du da auch nur
das eine, richtige Item hinzufügen ?

Das immer komplett Alles neuzuzeichen fände ich ziemlich unperformant.

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz