AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

Ein Thema von juergen · begonnen am 31. Jan 2016 · letzter Beitrag vom 31. Jan 2016
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 12:31
Hallo zusammen,

auf einem Panel habe ich ca. 30 Edits, wobei jedes Edit eine Überschrift für eine Spalte in einem Grid bedeutet.
Das Grid kann x Anzahl von Spalten haben.
Die Anzahl der vorhandenen Grid-Spalten zu ermitteln ist kein Problem.
Die Überschrift pro Spalte zu setzen ist auch kein Problem.

Aber wie könnte ich den Text von Edit 1 in Spalte 1 übernehmen, ... den Text von Edit 15 in Spalte 15 übernehmen usw.
Ich muss dazu irgendwie eine Schleife durchlaufen ala:
Delphi-Quellcode:
for i := Pred(cxGrid1DBTableView1.ColumnCount) downto 0 do begin
  cxGrid1DBTableView1.Columns[i].Caption := Edt_(i).Text // Pseudocode???
end;
Ich würde hier ungern mit zig If-Bedingungen arbeiten wollen, da gibt es bestimmt eine bessere Lösung.

Für Hinweise bedanke ich mich schon mal vorab!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (31. Jan 2016 um 12:41 Uhr) Grund: etwas präzsisiert mit Pseudocode
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 12:44
Z.B. mit Panel.FindComponent()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 12:56
Oder herkömmlich...
Delphi-Quellcode:
Edits[0] := Edit1;
Edits[1] := Edit2;
usw.

Klingt mir wieder mal nach "Datenhaltung" in Kontrolls...

Baue Dir doch zur Datenhaltung lieber einen Klasse oder ein Record..

Und das wird dann eben dargestellt oder angezeigt...

Geändert von Mavarik (31. Jan 2016 um 12:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 13:00
Hallo,

beim schreiben hier wurde mir klar dass ich mit einer 2. Schleife die Componenten durchlaufen muss...
Mein jetziger Code:
Delphi-Quellcode:
  for i := 0 to Pred(cxGrid1DBTableView1.ColumnCount) do begin
    for j := 0 to ComponentCount - 1 do begin
      if (Components[j] is TEdit) and (TEdit(Components[j]).Tag = i) and (TEdit(Components[j]).Tag > 0) then cxGrid1DBTableView1.Columns[i].Caption := TEdit(Components[j]).Text;
    end;
  end;
Das Problem dabei ist, dass die erste Spalten-Überschrift leer bleibt und ich gerade nicht weiß warum.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (31. Jan 2016 um 13:02 Uhr) Grund: Korrektur
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 13:09
So, ich hab's. Da die Tag-Eigenschaft mit 1 beginnt und nicht mit Null muss ich beim Vergleich dann auch eine "1" dazuzählen...

Delphi-Quellcode:
  // Spaltenmueberschriften dynamisch zur Laufzeit setzen...
  for i := 0 to Pred(cxGrid1DBTableView1.ColumnCount) do begin
    for j := 0 to ComponentCount - 1 do begin
      if (Components[j] is TEdit) and (TEdit(Components[j]).Tag = i + 1) and (TEdit(Components[j]).Tag > 0) then
          cxGrid1DBTableView1.Columns[i].Caption := TEdit(Components[j]).Text;
    end;
  end;
end;
Vielen Dank und allen noch einen schönen Sonntag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 13:24
Bei 30 Edits und 30 Spalten werden hier 900 Iteration durchgeführt.

Klingt ein wenig viel ...

Es reicht völlig
Delphi-Quellcode:
for j := 0 to ComponentCount - 1 do begin
  if (Components[j] is TEdit) and (TEdit(Components[j]).Tag > 0) then
    cxGrid1DBTableView1.Columns[TEdit(Components[j]).Tag-1].Caption := TEdit(Components[j]).Text;
Dann waren es nur noch 30
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 13:53
@Sir Rufo,

du hast so Recht. Danke für deine Aufmerksamkeit und das Aufzeigen wie es richtig gemacht wird!

Einen schönen Sonntag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#8

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 13:58
Hallöle...
Zitat:
...wie es richtig gemacht wird.
...ganz richtig wäre, wie schon erwähnt, eine Trennung von GUI und Daten.
Zitat:
Klingt mir wieder mal nach "Datenhaltung" in Kontrolls...
Baue Dir doch zur Datenhaltung lieber einen Klasse oder ein Record..
...ist die Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 14:06
Hallo haentschman,

das Ganze ist ein "Konfigurations-Tool" für das Quantumgrid.
Man wählt die DB aus, z.B. MSSQL, gibt die Überschriften pro Spalte vor, wählt den Datentyp pro Spalte aus, definiert pro Spalte ob Summenbildung erfolgen soll und gibt dann
ein SQL-Statement vor welches das Quantumgrid "befeuert". Diese Konfiguration lässt sich jeweils speichern.

Ich kann nun gar nicht abschätzen ob ich dafür den richtigen Weg gehe oder die GUI für Datenhaltung missbrauche. Für ein Konfigurations-Tool würde *ich* sagen das wäre so OK, oder?
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#10

AW: alle Edits durchlaufen und Edit_x_.Text einer Grid-Column zuweisen

  Alt 31. Jan 2016, 14:25

Zitat:
Man wählt die DB aus, z.B. MSSQL, gibt die Überschriften pro Spalte vor, wählt den Datentyp pro Spalte aus, definiert pro Spalte ob Summenbildung erfolgen soll und gibt dann
ein SQL-Statement vor welches das Quantumgrid "befeuert". Diese Konfiguration lässt sich jeweils speichern.
Das ist ein Klassiker für eine Datenklasse die erstmal doof nur die Daten (Konfiguration) hält und ggf. über das SQL Statement die Daten holt, das Speichern und Laden übernimmt.
Letztendlich brauchst du nur die Klasse auslesen und die enthaltenen Daten den entsprechenden Controls übergeben. Umgekehrt werden Änderungen in den Controls in der Klasse abgelegt. Somit bist du unabhänging ob die Anzahl der Spalten in einem Edit mit rosa Rahmen, einem Spinedit mit Schleifchen etc. dargestellt wird. Deine Logik arbeitet mit der Klasse. Denn sie hat die Controls nicht zu kennen. Ein Iterieren über die Controls um Daten abzufragen kommt nur in Frage wenn die Arche Noah ausgelaufen ist...

PS: Auch gerade bei eigenen Tools ist die Trennung wichtig, da einem immer wieder Erweiterungen einfallen die sonst an die Grenzen stoßen würden.

Geändert von haentschman (31. Jan 2016 um 14:28 Uhr)
  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 01:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz