Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Autosize Listiview en Lazarus (https://www.clubdelphi.com/foros/showthread.php?t=90144)

BDWONG 17-04-2016 05:20:56

Autosize Listiview en Lazarus
 
Hola chicos tengo un listview con el estilo vsReport, le añado el nombre a las columnas hasta ahi todo bien, el problema viene cuando palomeo su propiedad autosize a True, ejecuto mi programa pero no auto ajusta las columnas dependiendo el titulo de sus columnas quedando asi:



Lo mismo lo hago con delphi y no me da ningun problema, acaso lazarus necesita alguna configuracion diferente?

Espero su ayuda.
Saludos....:cool:

AgustinOrtu 17-04-2016 16:37:46

Proba con ponerle en Width -1 o -2

BDWONG 17-04-2016 20:25:51

Cuando se lo pongo me dice que el valor debe ser mayor o igual a cero pero de nada sirve ya que cuando lo pongo a true a autosize se auto re-dimensiona el tamano de witdth

BDWONG 17-04-2016 21:05:18

Hola despues de buscar se me ocurrio una posible solucion y es la de crear una funcion que auto ajuste las dimensiones del las columnas de listview, pero como el form esta expuesto a ser redimensionado puse la funcion dentro del evento onResize del formulario( Form)

La funcion en cuestion es esta:
Código Delphi [-]
procedure autoSizeListView(var listView:TListView; Form:TForm);
var
  i:Integer;
begin
  for i:=0 to listView.Columns.Count-1 do
  begin
    listView.Columns.Items[i].Width:=Form.Width div listView.Columns.Count;
  end;
end;

Pider por parametro un listView y una formulario, el listView tiene que ser pasado por referencia.
Ya que tenemos nuestra funcion nos vamos al evento onResize del formulario( Form) y ponemos la funcion ahi.
Ejemplo:

Código Delphi [-]
procedure TForm1.ListView1Resize(Sender: TObject);
begin
  autoSizeListView(ListView1,Form1);
end;




Si alguien tiene una mejor alternativa que lo haga saber.
Saludos...

AgustinOrtu 17-04-2016 23:57:58

A mi me parece correcto

De hecho seguro tengo un fragmento de código similar en algún lado

Lo del -1, el -2, viene del control listview de windows, que es envuelto por TListView de la VCL.
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Pero se ve que en fpc la implementación es distinta

Delphius 18-04-2016 00:25:22

Cita:

Empezado por AgustinOrtu (Mensaje 504438)
A mi me parece correcto

De hecho seguro tengo un fragmento de código similar en algún lado

Lo del -1, el -2, viene del control listview de windows, que es envuelto por TListView de la VCL.
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Pero se ve que en fpc la implementación es distinta

No he comprobado el caso del TListView que se comenta en el hilo. Pero si se me permite decirlo:

Es de esperar que la implementación en Lazarus sea distinta ya que tiene como premisa el concepto de multiplataforma y no debe verse atado a ningún SO. La LCL fue pensada así, es todo un concepto multiplataforma. Luego existen los WindGetSet, que son bibliotecas e interfaces que intermedian entre la LCL y el SO para ofrecer la mejor prestación y adaptación dependiendo del SO bajo el cual corre la aplicación.

Saludos,


La franja horaria es GMT +2. Ahora son las 05:29:20.

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