Claro, te lo paso aunque le he dado otra solución porque, como siempre, tengo el tiempo escaso y le estaba dando muchas vueltas a este tema.
Código Delphi
[-]
procedure TFormPrincipal.MuestraArticulos(Grupo: String);
var
Boton: TNTSB2;
TextoEnIdioma: String;
Posicion,Aumento: SmallInt;
TopP,LeftP: SmallInt;
ImagenBMP: TBitMap;
begin
TopP:=3;
LeftP:=3;
if Debughook=0 then
Aumento:=2
else
Aumento:=1;
ScrollBox3:=TScrollBox.Create(nil);
ScrollBox3.Left := ScrollBox2.Left;
ScrollBox3.Top := ScrollBox2.Top;
ScrollBox3.Height := ScrollBox2.Height;
ScrollBox3.Width := ScrollBox2.Width;
ScrollBox3.Parent := FormPrincipal;
FormMain.EDBQuery1.SQL.Clear;
FormMain.EDBQuery1.SQL.Add('SELECT FAMILIA,CODIGO,DESCRIPCIO,IDIOMA1 FROM ARTICULOS A LEFT JOIN GRUPART B ON A.CODIGO=B.ARTICULO WHERE A.CODIGO='+QuotedStr(Grupo)+' ORDER BY B.POSICION');
FormMain.EDBQuery1.ExecSQL;
while not FormMain.EDBQuery1.Eof do begin
if DlgPropiedades.Idioma=1 then begin
TextoEnIdioma:=FormMain.EDBQuery1.FieldByName('DESCRIPCIO').AsString;
end else if DlgPropiedades.Idioma=2 then begin
TextoEnIdioma:=FormMain.EDBQuery1.FieldByName('IDIOMA1').AsString;
end;
Boton:=TNTSB2.Create(nil);
Boton.Name := 'A'+FormMain.EdbQuery1.FieldByName('FAMILIA').AsString+FormMain.EdbQuery1.FieldByName('CODIGO').AsSt ring;
Boton.Tipo := tTituloSimple;
Boton.Caption := TextoEnIdioma;
Boton.Color := clWhite;
Boton.Parent := ScrollBox3;
Boton.Top := TopP;
Boton.Left := LeftP;
Boton.Width := Trunc(134*Aumento);
Boton.Height := Trunc(162*Aumento);
Boton.NTValor := 'A*'+FormMain.EdbQuery1.FieldByName('FAMILIA').AsString+FormMain.EdbQuery1.FieldByName('CODIGO').AsS tring;
Boton.OnClick := FormTomarLlevar.BotonPulsado;
LeftP:= LeftP + Boton.Width +3;
if LeftP> (Boton.Width*2)+20 then begin
TopP:= TopP + Boton.Height +3;
LeftP:=3;
end;
Posicion:=DlgPropiedades.ListaArticulos.IndexOf(FormMain.EdbQuery1.FieldByName('FAMILIA').AsString+F ormMain.EdbQuery1.FieldByName('CODIGO').AsString);
DlgPropiedades.ImageListArticulos.GetBitmap(Posicion,Boton.Glyph);
FormMain.EDBQuery1.Next;
end;
ScrollBox2.Visible := fALSE;
ScrollBox3.BringToFront;
PanelLadoD.BringToFront;
end;