[Vídeo Aula] Etiquetas Personalizadas com Quick Report(erro)

Delphi

09/11/2007

Olá!

Estive acompanhando a vídeo aula sobre criação de etiquetas personalizadas com quick report, feita pelo Paulo Quicoli, e na última, mesmo deixando igual à vídeo-aula, não corrigiu o problema:

Escolho uma opção pelo lookupcombobox (6x13), os labels aparecem no panel daí escolho a partir de qual eu quero imprimir. Mas se após isso, eu escolher uma outra opção no lookupcombobox (3x7) e escolher a partir de qual eu quero imprimir, daí os labels que escolhi antes, aparecem de fundo, sendo que os códigos postados na vídeo-aula número 5, no vídeo funcionou, mas na minha aplicação não funcionou! comparei meu projeto com os códigos do vídeo, estão iguais, mas não deu certo...

Este é o código, que deverá limpar os labels criados em tempo de execução, para após ser escolhido outra opção no lookupcombobox, aparecer novamente de forma correta, sem aparecer embaixo, os outros:

begin
for x := PainelEtiqueta.ComponentCount -1 downto 0 do
begin
Etiqueta := TLabel(PainelEtiqueta.Components[x]);
PainelEtiqueta.RemoveComponent(Etiqueta);
Etiqueta.Parent := nil;
Etiqueta.Free;
Etiqueta := nil;
end;
PainelEtiqueta.Refresh;

Obrigado pela atenção...


Lucas_spohr

Lucas_spohr

Curtidas 0

Respostas

Lucas_spohr

Lucas_spohr

09/11/2007

up


GOSTEI 0
Lucas_spohr

Lucas_spohr

09/11/2007

UP!!!!!!!!!!!!!!!!


GOSTEI 0
Lucas_spohr

Lucas_spohr

09/11/2007

Ninguém, será?

Aguardo o retorno!


GOSTEI 0
Lucas_spohr

Lucas_spohr

09/11/2007

Nem o autor da vídeo-aula, ñ poderia me responder?


GOSTEI 0
Lucas_spohr

Lucas_spohr

09/11/2007

bom... refiz a minha pergunta... creio que tenha ficado mais claro:

Fiz meu projeto de impressão de etiquetas personalizadas, com o quick report...

Fazendo os seguintes passos, não está dando certo:

1º. Ao abrir o meu formulário, tenho um DBLookupComboBox com as seguintes opções de escolha: [3x6, 5x15, 8x20]. Opto pela opção 3x6.
2º. Ao optar pela opção 3x13, no panel do formulário, irá fazer a montagem dos Labels, de forma dinâmica, ficando da seguinte forma:
[01] [07] [13]
[02] [08] [14]
[03] [09] [15]
[04] [10] [16]
[05] [11] [17]
[06] [12] [18]
3º. Escolho para imprimir a partir da quarta etiqueta, que deverá ficar assim:
[07] [13]
[08] [14]
[09] [15]
[04] [10] [16]
[05] [11] [17]
[06] [12] [18]
4º. No DBLookupComboBox, opto pela opção 5x15, que fará a criação dinâmica dos labels no panel, com 5 colunas por 15 linhas. Aí está o problema: Quando escolho a partir de qual etiqueta eu quero imprimir, as colunas e as linhas da opção 3x6 aparecem embaixo, ficando embaralhado com as demais etiquetas.

O processo, deveria ser o seguinte:
Quando eu opto por uma segunda opção pelo DBLookupComboBox, no Panel, ele deverá ser ´limpado´ e montado novamente, seguindo a minha opção de escolha no DB. Eis abaixo, o código que eu tenho no projeto, que deverá fazer a limpeza do panel:


procedure TfrmPrincipal.CriaEtiqueta(NroColuna, NroLinhas: integer);
var
x, y: integer;
LarguraColunas, AlturaColunas: double;
Etiqueta: TLabel;
lTag: integer;
Esquerda, Topo: integer;
begin
{Daqui até...}
for x := PainelEtiqueta.ComponentCount -1 downto 0 do
begin
Etiqueta := TLabel(PainelEtiqueta.Components[x]);
PainelEtiqueta.RemoveComponent(Etiqueta);
Etiqueta.Parent := nil;
Etiqueta.Free;
Etiqueta := nil;
end;
{...aqui, deveria fazer a limpeza do panel!!!}
PainelEtiqueta.Refresh;
LarguraColunas := PainelEtiqueta.Width / NroColuna; // dividido pelo n. col
AlturaColunas := PainelEtiqueta.Height / NroLinhas;
lTag := 0;
Esquerda := 0;
Topo := 0;
for x:=1 to NroColuna do
begin
for y:=1 to NroLinhas do
begin
Inc(lTag);
Etiqueta := TLabel.Create(nil);
Etiqueta.Alignment := taCenter;
Etiqueta.Parent := PainelEtiqueta;
Etiqueta.AutoSize := False;
Etiqueta.Height := Trunc(AlturaColunas);
Etiqueta.Width := Trunc(LarguraColunas);
Etiqueta.Caption := IntToStr(lTag);
Etiqueta.Tag := lTag;
Etiqueta.Left := Esquerda;
Etiqueta.Top := Topo;
Etiqueta.Color := clWhite;
Etiqueta.Visible := True;
Etiqueta.OnClick := ClickEtiqueta;
Topo := Topo + Etiqueta.Height;
end;
Topo := 0;
Esquerda := Esquerda + Etiqueta.Width;
end;
end;


Alguém saberia me dizer onde estaria o erro?

Desde já, agradeço.
Muito obrigado!


GOSTEI 0
POSTAR