Moin
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
Hier wie ich in die StringGrid (alias: TabelleNeu) die Combo und Edit zuweise:
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
Dankeschöö