Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Eingabe Text Edit-Feld
Lokke - Mi 08.06.05 09:45
Titel: Eingabe Text Edit-Feld
Moin 8)
ich hab schon wieder ein Problem.
Ich habe auf meiner Form ein StringGrid mit 3 Spalten. Die erste ist fest. In die 2. Spalte habe ich eine ComboBox eingebaut und in die 3. Spalte ein Edit-Feld.
Mein Combobox funz ganz gut, ist wie eine DropDownList, wo man z.B.Kunden auswählen kann. In das Edit-Feld, 3. Spalte, soll noch ein Eintrag wie Artikelbezeichnung eingetragen werden können.
Problem!!!
Ich kann nur ein Zeichen in das Edit-Feld eingeben und das wars schon, leider :cry:
Hier wie ich in die StringGrid (alias: TabelleNeu) die Combo und Edit zuweise:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| procedure TForm1.TabelleNeuSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var R: TRect; begin if (ACol = 1) and (ARow <> 0) then begin R := TabelleNeu.CellRect(ACol, ARow); R.Left := R.Left + TabelleNeu.Left; R.Right := R.Right + TabelleNeu.Left; R.Top := R.Top + TabelleNeu.Top; R.Bottom := R.Bottom + TabelleNeu.Top; with Combobox1 do begin Left := R.Left + 2; Top := R.Top + 1; Width := (R.Right + 2) - R.Left; Height := (R.Bottom + 6) - R.Top; Visible := True; SetFocus; end; end; CanSelect := True;
if (ACol = 2) and (ARow <> 0) then begin R := TabelleNeu.CellRect(ACol, ARow); R.Left := R.Left + TabelleNeu.Left; R.Right := R.Right + TabelleNeu.Left; R.Top := R.Top + TabelleNeu.Top; R.Bottom := R.Bottom + TabelleNeu.Top; with Edit7 do begin Left := R.Left + 1; Top := R.Top + 1; Width := (R.Right + 1) - R.Left; Height := (R.Bottom + 1) - R.Top; Visible := True; SetFocus; end; end; CanSelect := True;
end;
procedure TForm1.ComboBox1Change(Sender: TObject); begin TabelleNeu.Cells[TabelleNeu.Col, TabelleNeu.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; TabelleNeu.SetFocus; end;
procedure TForm1.ComboBox1Exit(Sender: TObject); begin TabelleNeu.Cells[TabelleNeu.Col, TabelleNeu.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; TabelleNeu.SetFocus; end;
procedure TForm1.Edit7Exit(Sender: TObject); begin TabelleNeu.Cells[TabelleNeu.Col, TabelleNeu.Row] := Edit7.Text; Edit7.Visible := False; TabelleNeu.SetFocus; end;
procedure TForm1.Edit7Change(Sender: TObject); begin TabelleNeu.Cells[TabelleNeu.Col, TabelleNeu.Row] := Edit7.Text; Edit7.Visible := False; TabelleNeu.SetFocus; end; |
Und hier was passieren soll, wenn die Form angezeigt wird:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.FormShow(Sender: TObject); var i : Integer; begin FKundenNamen.Clear; Kundentab.First; for i:=0 to Kundentab.RecordCount - 1 do begin FKundenNamen.Add(Kundentab.FieldByName('Kundenname').AsString); Kundentab.Next; end; UpdateKundenStents;
with Edit7 do begin TabelleNeu.DefaultRowHeight := Height; Visible := False; Edit7.Text := ''; end;
with Combobox1 do begin TabelleNeu.DefaultRowHeight := Height; Visible := False; Combobox1.Items := FKundenNamen; end; end; |
Was mach ich den falsch?
Muß ich vielleicht ein anderes Ereignis für Edit nehmen??
Wäre glücklich über vorschläge :lol:
Dankeschöö
Tino - Mi 08.06.05 09:54
Hallo!
Wo genau jetzt dein Fehler liegt kann ich leider nicht sagen. Allerdings würde ich bei dem StringGrid und deiner Combobox und Editbox anders vorgehen. Benutze, wie es eigentlich auch von TStringGrid vorgesehen ist, einen eigenen InplaceEditor.
Hier [
http://www.delphi-forum.de/viewtopic.php?p=21546#21546] habe ich ganz kurz etwas zu geschrieben. Im DF solltest du aber wohl ein paar Beispiel finden:
TINPLACEEDIT.
Gruß
Tino
Lokke - Mi 08.06.05 10:03
Danke für die scnelle Antwort!
Werd mal versuchen etwas in die richtung zu basteln. Ob ich damit klar komme :wink: Ich hoffe doch
cu
Lokke
Lokke - Mi 08.06.05 10:52
Ich hab mein Problem jetzt anders gelöst.
Habe für Edit, OnKeyDown Ereignis genommen, statt OnChange und einwenig
if ...then begin code und schon funz das!!! :P
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Edit7KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then begin TabelleNeu.Cells[TabelleNeu.Col, TabelleNeu.Row] := Edit7.Text; Edit7.Visible := False; TabelleNeu.SetFocus; end; end; |
danke trotzdem für den Vorschlag!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!