Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Überlagerung von Properties (DevExpress) (https://www.delphipraxis.net/54218-ueberlagerung-von-properties-devexpress.html)

Tau 29. Sep 2005 23:56


Überlagerung von Properties (DevExpress)
 
Hallo zusammen

mit dem folgenden Code möchte ich gerne an die Daten im Grid rankommen.

Dem ist leider nicht so, ich bekomme immer einen Falschen wert (Form1)

Code:
  with cxGrid1DBBandedTableView1AnZahlTage.Properties as TcxTextEditProperties do
    begin
      m := StrToInt( Text );
    end;
ich glaube es gibt irgend wie einen Überlagerung vom :wall: ( Text ) :wall:
obwohl es ein Bestandteil vom TcxTextEditProperties ist.

Kann mir jemand Helfen

Besten Dank
Tau

marabu 30. Sep 2005 06:26

Re: Überlagerung von Properties (DevExpress)
 
Hallo Tau,

die von dir vermutete Überdeckung kannst du recht einfach überprüfen, indem du mit einer Zwischenvariable arbeitest:

Delphi-Quellcode:
var
  tep: TcxTextEditProperties;
begin
  tep := {with} cxGrid1DBBandedTableView1AnZahlTage.Properties as TcxTextEditProperties;
  ShowMessage(tep.Text);
end;
Wenn keine Überdeckung vorliegt, dann gehst du vielleicht falsch an die Sache heran. Der aktuellen Online-Dokumentation entnehme ich, dass der Zugriff über die property Text von TextEdit erfolgen kann. Leider hast du nicht geschrieben, von welchem Typ cx...AnzahlTage ist. Hast du einen URL für die Online-Dokumentation deiner Komponente?

Grüße vom marabu

das with muss natürlich weg

alzaimar 30. Sep 2005 07:00

Re: Überlagerung von Properties (DevExpress)
 
Wenn Du auf Werte im Grid zugreifen willst, dann geht das so nicht (äh, glaube ich). Ich mache es jedenfalls so, uns so steht es auch in der OH:
Delphi-Quellcode:
Var
 iCol : Integer;

Begin
  iCol := cxGrid1DBBandedTableView1AnZahlTage.Index;
  ShowMessage (MycxGrid.DataController.Values [MycxGrid.DataController.FocusedRecordIndex, iCol]);
End;
Jetzt hast Du Zugriff auf die Werte im Grid (auch wenn es datensensitiv ist). Wenn Du die formatierten Werte willst, nimmst Du DisplayTexts statt Values. Eine 'Text' Eigenschaft gibt es bei dein TcxXXXProperties nicht.

Die TcxTextEditProperties (und alle Tcx...Properties) beziehen sich nur auf die spezifischen Eigenschaften des Editors, der der Zelle zugeordnet ist, deshalb heissen sie auch so : "Tcx___EditProperties".

Tau 30. Sep 2005 14:30

Re: Überlagerung von Properties (DevExpress)
 
Hallo zusammen

leider helfen mir die Tipps nicht.

ich versuche gerade eine online Berechnung im Grid zu machen. (TcxTextEditProperties mit onChange)

Code:
var
  tep: TcxTextEditProperties;
begin
  tep := with cxGrid1DBBandedTableView1AnZahlTage.Properties as TcxTextEditProperties;
  ShowMessage(tep.Text);
end;
mit diesem Code bekomme ich immer EX das die Datenmenge Null ist. :wall: :wall:

deswegen wollte ich auf denn Text von TcxTextEdit zugreifen.

bin für andere Vorschläge immer offen.

Besten Dank
Tau

alzaimar 30. Sep 2005 14:39

Re: Überlagerung von Properties (DevExpress)
 
Also, tut mir leid, bei mir gibts noch nichtmal eine Text-Eigenschaft vom den TcxTextProperties, aber egal.
WAS genau willst du denn machen?

Du hast also ein Grid und im OnChange einer Zelle willst Du dann ... was machen`

Poste doch mal ein miniprojekt (mit DevExpress TcxGrid, is ja kein Problem). Ich kann Dir heute abend aber erst helfen...

Tau 30. Sep 2005 15:38

Re: Überlagerung von Properties (DevExpress)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alzaimar

habe ein kleines Projekt dazugehängt
im Grunde ist es ganz einfach.

ich möchte den Wert den ich in die Spalte F013
eingebe mit irgendeinen Wert Multiplizieren und
in die Zelle F014 wieder ausgeben.

Und das sollte wehren der Eingabe basieren.

ist gar keine Hexerei normal aber wenn ich nicht :wall: :wall: :wall:
weis wie ich an die Daten rankomme dann schon.

schöne Grüsse
Tau

alzaimar 30. Sep 2005 20:45

Re: Überlagerung von Properties (DevExpress)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Ich habe Dir zwei Möglichkeiten eingebaut: Die erste ist banal über ein calculated Field. Komischerweise gerät die Berechnung in eine Endlosschleife, da musste ich einen kleinen Trick anwenden (siehe Sourcecode).

Als zweite Möglichkeit habe ich eine Spalte 'F014' ohne Feldnamen definiert. Der darzustellende Text wird über das OnGetDataText event aus F013 berechnet. Hier wird aber nix in dem Dataset gespeichert.

Hoffe, ich konnte Dir helfen.

Tau 30. Sep 2005 21:14

Re: Überlagerung von Properties (DevExpress)
 
Hallo alzaimar

Erstmal Danke für deine Bemühungen :thumb:

Die Lösung mit den calculated Field wird erst beim Speichern vom
Datensatz ausgelöst und kommt für mich leider nicht in Frage.

Ist noch nicht so das was ich wollte. Werde eine E-Mail an den Support
von DevExpress schicken vielleicht kann der mir Helfen. :gruebel:

Es mus doch noch eine andere Lösung geben um an die Daten im Grid heranzukommen.

schöne Grüsse
Tau

alzaimar 30. Sep 2005 23:20

Re: Überlagerung von Properties (DevExpress)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mach das und poste vielleicht deren Antwort, würde mich auch interessieren.

Bei mir wird nicht erst beim Posten der berechnete Wert angezeigt, sondern auch dann, wenn man die Zelle mit ENTER oder TAB wechselt. Also, mir würde das reichen, oder willst Du echt bei jedem Tastendruck ein Update der berechneten Zellen? Dann füge einfach ein Event TcxGridDBBandedColumn.OnEditKeyUp ein:
Delphi-Quellcode:
procedure TForm1.cxGrid1DBBandedTableView1EditKeyUp(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
  AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState);
begin
  aEdit.PostEditValue
end;
Hattest Du aber auch gleich sagen können :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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