Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Manipular data entre StringGrids (https://www.clubdelphi.com/foros/showthread.php?t=61040)

JoseFco 22-10-2008 21:50:51

Manipular data entre StringGrids
 
"Tolomeo se mudo al Polo Norte"

Caro 22-10-2008 22:07:53

Cita:

Empezado por JoseFco (Mensaje 321714)
¿ Existe alguna propiedad que me permita manipular el contenido de una casilla a la siguiente a la derecha o a la izquierda? De existir fuera muy interesante entenderla, de lo contrario pues la tendria que crear por codigo.

Hola Jose, a que te refieres con manipular el contenido de una casilla a la siguiente derecha o izquierda :confused:. Que es exactamente lo quieres hacer, digamos que estas en la casilla de la columna 3, que téndría que pasar cuando vas a la casilla de la izquierda o derecha.

Saluditos

JoseFco 22-10-2008 22:25:14

"Tolomeo se mudo al Polo Norte"

Caro 22-10-2008 22:54:34

Tu lo que quieres es mover el bit (osea la casilla donde estas) tanto a la izquierda como a la derecha. Lo que se me ocurre es que actives la propiedad para poder mover columnas y con eso podras mover las columnas tanto a la izquierda como a la derecha. La propiedad es Options->GoColMoving lo colocas a True.

Saluditos

JoseFco 22-10-2008 23:04:26

"Tolomeo se mudo al Polo Norte"

JoseFco 23-10-2008 02:14:41

"Tolomeo se mudo al Polo Norte"

Lepe 23-10-2008 12:10:38

Lo más fácil es como lo estás haciendo ahora, no creo sea viable andar borrando columnas e insertando nuevas, es más lioso

Código Delphi [-]
procedure Multiplica(gr:TStringGrid);
var i:integer;
begin
  for i:= gr.cols -1 downto 1 do
    gr[i,0] := gr[i-1];
  gr[0,0] := '0';
end;

procedure Divide(gr:TStringGrid);
var i:integer;
begin
  for i:= 0 to gr.Cols -2 do
    gr[i,0] := gr[i+1];
  gr[gr.cols -1,0] := '0';
end;

Creo que el stringgrid tiene la propiedad "Cols" o "ColsCount" no recuerdo bien (no lo uso mucho).

He supuesto que el bit de menos peso está en la columna cero. Si lo tienes al revés, solo intercambia el nombre de los procedimientos, el que multiplica en realidad dividiría y al revés.

Saludos

JoseFco 23-10-2008 12:28:51

"Tolomeo se mudo al Polo Norte"

JoseFco 23-10-2008 22:08:14

"Tolomeo se mudo al Polo Norte"

egostar 23-10-2008 22:18:19

Hola amigo,

Y no te sirve usar la funcion ReverseString() ????

Código Delphi [-]
uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  Cadena: string;
begin
  Cadena := '76543210';
  ShowMessage(cadena+#13+ReverseString(cadena));
end;

Salud OS

BlueSteel 23-10-2008 22:41:12

Hola JoseFco

tambien puedes utilizar el NiceGrid, si bien no estoy seguro que pueda hacer lo que tu dices de una manera fácil... es mejor que el StringGrid....

Puedes ver sus características y descargarlo desde aquí...

Salu2:p:D

JoseFco 23-10-2008 22:59:21

"Tolomeo se mudo al Polo Norte"

Lepe 24-10-2008 13:48:03

Si necesitas tanto control sobre las columnas, es mejor como lo estás haciendo ahora, sin bucles ni nada.

El bucle "for" lo hice pensando en la forma más rápida, pero si tenemos que controlar varias excepciones, al final el código se acaba ensuciando mucho y una modificación es más complicada.

Lo que sí te aconsejo es crear rutinas que le pases el Grid como parámetro, así no tienes que duplicar código. No sé si será viable, tú verás:

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
begin
  Divide(ACC);
end;

procedure TForm1.Divide(elGrid:TStringGrid);
var tmp:string;
begin
tmp := elGrid.Cells[7,0]; // para no perderlo
elGrid.Cells[7,0] :=elGrid.Cells[6,0];
elGrid.Cells[6,0] :=elGrid.Cells[5,0];
elGrid.Cells[5,0] :=elGrid.Cells[4,0];
elGrid.Cells[4,0] :=elGrid.Cells[3,0];
elGrid.Cells[3,0] :=elGrid.Cells[2,0];
elGrid.Cells[2,0] :=elGrid.Cells[1,0];
elGrid.Cells[1,0] :=elGrid.Cells[0,0];
elGrid.Cells[0,0] := tmp;
end;

JoseFco 24-10-2008 13:58:00

"Tolomeo se mudo al Polo Norte"

JoseFco 24-10-2008 16:39:50

"Tolomeo se mudo al Polo Norte"

JoseFco 24-10-2008 22:06:52

"Tolomeo se mudo al Polo Norte"


La franja horaria es GMT +2. Ahora son las 04:34:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi