Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   StringGrid eingabe an Edit (https://www.delphipraxis.net/85826-stringgrid-eingabe-edit.html)

SaFu 5. Feb 2007 13:52


StringGrid eingabe an Edit
 
hi wie kann ich betimmte eingaben in einer gewissen Spalte im StrinGrid an ein Edit weitergeben.
Also wenn ich in z.B. die Spalte 12 zeile xy was eingebe, soll es zur Laufzeit an ein Editfeld gegeben werden.

Gruss sascha

pilic 5. Feb 2007 14:17

Re: StringGrid eingabe an Edit
 
Hi,

müsste man das nicht in der OH bei den properties von TStringGrid finden?? :lol:

Delphi-Quellcode:
Edit1.Text:=StringGrid1.Cells[12,xy];

marabu 5. Feb 2007 14:21

Re: StringGrid eingabe an Edit
 
Hallo Sascha,

wenn du das Ereignis OnSetEditText() des StringGrids verwendest, dann kannst du die Eingabe direkt aus dem Parameter Value übernehmen.

Grüße vom marabu

SaFu 5. Feb 2007 15:15

Re: StringGrid eingabe an Edit
 
Funktioniert das auch wenn ich in der Spalte 12 in zeile 1,5,7,9 (nur als beispiel) was eingebe, und das es mir nach einander im Editfeld angezeigt wird???

marabu 5. Feb 2007 15:27

Re: StringGrid eingabe an Edit
 
Warum probierst du es nicht einfach aus?

Nur Mut, der Himmel wird dir schon nicht auf den Kopf fallen.

SaFu 5. Feb 2007 15:48

Re: StringGrid eingabe an Edit
 
Hab es mal verucht es wird immer nur die letzte beschrieben zelle ins Edit zurückgegeben

marabu 5. Feb 2007 15:54

Re: StringGrid eingabe an Edit
 
Bei mir werden die Zelleninhalte in der Reihenfolge der Bearbeitung in das Edit-Control geschrieben:

Delphi-Quellcode:
procedure TDemoForm.StringGridSetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  SaschaEdit.Text := Value;
end;
Egal, in welcher Zelle ich editiere.

Wie hast du getestet?

himitsu 5. Feb 2007 16:05

Re: StringGrid eingabe an Edit
 
mit überschraibst du natürlich immer den vorherigen Inhalt,
Delphi-Quellcode:
Edit1.Text := StringGrid1.Cells[12, xy];
Aber du kannst doch Strings zusammenfügen?

Delphi-Quellcode:
// Edit leeren
Edit1.Text := '';

// neuen Wert hinten anhängen
Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,xy];

Delphi-Quellcode:
// 2 Felder in einem Edit
Edit1.Text := StringGrid1.Cells[5,xy] + ' ' + StringGrid1.Cells[12,xy];
usw.

SaFu 5. Feb 2007 19:28

Re: StringGrid eingabe an Edit
 
Habe es mal mit allem versucht, beim Value wird es für das ganze StringGrid übernommen und nicht nur für eine ganz bestimmte Spalte und es überschreibt jedesmal das Edit.

Die andere lösung ist sehr aufwendig und es werden immer die lehrzeichen mitgenommen

Delphi-Quellcode:
Edit1.Text := '';
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,1];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,2];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,3];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,4];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,5];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,6];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,7];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,8];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,9];
 Edit1.Text := Edit1.Text + ' ' + StringGrid1.Cells[12,10];
Gibt es da noch eine andere lösung?????

marabu 5. Feb 2007 20:02

Re: StringGrid eingabe an Edit
 
Hallo Sascha,

wenn du einfach alle Werte aus einer bestimmten Spalte als String verkettet haben willst, dann geht das auch so:

Delphi-Quellcode:
var
  s: TStrings;
begin
  with TStringList.Create do
  try
    Assign(StringGrid.Cols[12]); // Spalte 12 übernehmen
    Delete(0); // weg mit der Spaltenüberschrift
    DeinEdit.Text := StringReplace(Text, sLineBreak, '', [rfReplaceAll]);
    // DeinEdit.Text := CommaText; // oder so
    // delimiter := ' '; // oder so
    // DeinEdit.Text := DelimitedText; // ...
  finally
    Free;
  end;
end;
Getippt und nicht getestet.

Freundliche Grüße

SaFu 5. Feb 2007 20:37

Re: StringGrid eingabe an Edit
 
So klappt es wunder bar die kommas sin zwar unschön aber damit kann man leben, dann müsste es doch auch mit 2 Spalten gehen oder??

marabu 6. Feb 2007 07:43

Re: StringGrid eingabe an Edit
 
Hallo Sascha,

wenn dir das Komma nicht gefällt: Im ersten Ansatz kannst du beim StringReplace() anstelle des Leerstrings einen beliebigen Trenner eintragen. Im letzten Ansatz über DelimitedText kannst du den Delimiter relativ frei wählen und bekommst sogar noch ein Quoting geschenkt.

Wenn du die Zellwerte von mehr als einer Spalte verketten möchtest, dann musst du den Code noch etwas erweitern:

Delphi-Quellcode:
var
  s: TStrings;
  iCol, iFix: Integer;
begin
  with TStringList.Create do
  try

    for iCol := 12 to 13 do
    begin
      iFix := Count;
      AddStrings(StringGrid.Cols[iCol]); // Spalte iCol übernehmen
      Delete(iFix); // weg mit der Spaltenüberschrift
    end;

    DeinEdit.Text := CommaText;
  finally
    Free;
  end;
end;
Freundliche Grüße

SaFu 6. Feb 2007 08:47

Re: StringGrid eingabe an Edit
 
mal eine frage was ist ein Quoting?

SaFu 6. Feb 2007 22:54

Re: StringGrid eingabe an Edit
 
Hab nochmal ne zum Edit kann man die übergabe in das Edit auch Alphabet. Ordnen nur nach den Anfangsbuchstaben.

z.B. wenn ich eingebe Hallo, Arm, Mund, Bein, dass es dann so im Edit Steht Arm, Bein, Hallo, Mund.

Lannes 6. Feb 2007 22:59

Re: StringGrid eingabe an Edit
 
Hallo,

eine StringList kennt die Eigenschaft Sorted, denke das Dir das dabei weiterhilft.

SaFu 6. Feb 2007 23:02

Re: StringGrid eingabe an Edit
 
100% Sicher


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