Gambas: Tabelle: TableView1 Form1.class
Erscheinungsbild
$hData[10, 10] AS String $iCurRow AS Integer $iCurColumn AS Integer PUBLIC SUB Form_Open() DIM x AS Integer DIM y AS Integer 'TableView vergrößern TableView1.Rows.Count = 10 TableView1.Columns.Count = 10 'und mit Werten füllen FOR x = 0 TO 9 TableView1.Columns[x].Title = x + 1 FOR y = 0 TO 9 $hData[x, y] = "Z " & (x + 1) & " - S " & (y + 1) NEXT NEXT 'für dieses Beispiel gelben Hintergrund setzen 'damit man sieht, wann und wo die TextBox auftaucht TextBox1.Background = &HFFFF00& TextBox1Hide 'Die TextBox vorerst verschwinden lassen ME.Center END PUBLIC SUB Button1_Click() ME.Close END PUBLIC SUB TableView1_Data(Row AS Integer, Column AS Integer) TableView1.Data.Text = $hData[Row, Column] END PUBLIC SUB TableView1_Click() 'die angeklickte Zelle merken $iCurRow = TableView1.Row $iCurColumn = TableView1.Column TextBox1Show END PUBLIC SUB TextBox1Show() WITH TableView1[$iCurRow, $iCurColumn] 'den Text der angeklickten Zelle in die TextBox kopieren TextBox1.Text = .Text 'und die TextBox genau über die Zelle plazieren TextBox1.Move(TableView1.X + .X + 1, TableView1.Y + .Y, .W - 1, .H) END WITH WITH TextBox1 .Border = FALSE .Raise .Show .SetFocus END WITH END PUBLIC SUB TextBox1Save() IF $hData[$iCurRow, $iCurColumn] <> TextBox1.Text THEN $hData[$iCurRow, $iCurColumn] = TextBox1.Text TableView1.Refresh ENDIF TextBox1Hide END PUBLIC SUB TextBox1Hide() TextBox1.Hide END PUBLIC SUB TextBox1_KeyPress() IF Key.Code = Key.Return THEN TextBox1Save IF Key.Code = Key.Esc THEN TextBox1Hide END PUBLIC SUB TableView1_MouseDown() IF TextBox1.Visible = TRUE THEN TextBox1Save END PUBLIC SUB TableView1_MouseWheel() IF TextBox1.Visible = TRUE THEN TextBox1Save END