2011-07-13 33 views
5

¿Cómo puedo moverme entre las celdas de una cuadrícula en Delphi por tabulación o las teclas de flecha? Como saben, una cuadrícula de cadena en delphi tiene solo un orden de tabulación, pero necesito moverme entre las celdas mediante las teclas de flecha o la pestaña para ser más cómodo y fácil de usar.delphi: mover entre las celdas de la cuadrícula

He intentado utilizar un evento KeyPress, pero este evento sólo sabe caracteres y no sabe como teclas de control de ficha y ...

+0

Sobre el error: http://meta.stackexchange.com/questions/92074/what-can-i-do-when-getting-it-does-not-meet-our-quality-standards –

Respuesta

5
StringGrid.Options := StringGrid.Options + [goEditing, goTabs]; 

o conjunto de este tiempo de diseño.

Ahora puede pasar de una celda a otra con las pestañas y las teclas de flecha. Si realmente está editando una celda, primero debe soltar el foco si quiere moverse a la celda hacia la izquierda o hacia la derecha. En ese caso, use la pestaña (shift).

+0

¿Por qué goEditing? –

+0

oh mi dios ,,,, es la mejor respuesta en mi vida. gracias . – Arash

+0

goediting es para tipo a celdas ,,, si es falso no puede escribir en celdas – Arash

0
{ This handles arrow left and right in the GRID 
} 
procedure TJournalForm.JournalGridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); 

begin 
    if (JournalGrid.EditorMode = True) then  // if arrowing while editing… 
     begin 
      if Key=VK_Left then if JournalGrid.Col>(JournalGrid.FixedCols+1) then JournalGrid.Col:=JournalGrid.Col-1; 
     if Key=VK_Right then if JournalGrid.Col<(JournalGrid.ColCount-1) then JournalGrid.Col:=JournalGrid.Col+1; 
    end; 
end; 
+1

Establezca 'EditorMode: = false' antes de establecer un nuevo valor en la propiedad' Col'. –

Cuestiones relacionadas