Olá pessoal!

Mandei a mensagem respondendo de forma equivocada a mensagem de um colega.

Estou apanhando de um componente ListView que estou utilizando para
mostrar um mapa de mesas no meu sistema. O que ocorre é que eu
utilizava o código abaixo para formulár o mapa a cada alteração que uma
mesa era adicionada ou alterada:

procedure TfrmFrente.CompoeMa pa(Sender: TObject);
Var
List: TStringList;
List2: TStringList;
Var
NewItem: TListItem;
I: Integer;
begin
// MONTAGEM DO ARQUIVO DE TEXTO
sqlMapaMesasIni( 'N', '%');
sqlMapaMesas. First;
List := TStringList. Create;
While Not (sqlMapaMesas. Eof) do
begin
List.Add(sqlMapaMes as.FieldByName( 'MESA_CARTAO' ).AsString) ;
If ((Time >= (sqlMapaMesas. FieldByName( 'ULTIMO_LANCAMEN TO').Value
+ dm.sqlConfig. FieldByName( 'CT_MINUTOS_ ALERTA'). Value))) then
// se o tempo sem atendimento for igual ou maior que o definido no config
begin
If (vPassada <> 1) then
// se for a passada 1 coloca os ícones normais
begin
If (sqlMapaMesas. FieldByName( 'STATUS') .AsString = 'A') then
List.Add('@' + IntToStr(1))
else
List.Add('@' + IntToStr(0)) ;
end
else
// caso contrário coloca o ícone em branco
begin
List.Add('@' + IntToStr(3)) ;
end;
// se houver mesas agrupadas... adiciona no mapa
If Not (sqlMapaAgrupadas. IsEmpty) then
begin
While Not (sqlMapaAgrupadas. Eof) do
begin
// se para agrupadas também for passada 1 coloca ícone padrão de agrupamento
If (vPassada <> 1) then
begin
List.Add(sqlMapaAgr upadas.FieldByNa me('MESA' ).AsString) ;
List.Add('@' + IntToStr(2)) ;
end
else
// caso contrário ícone branco
begin
List.Add(sqlMapaAgr upadas.FieldByNa me('MESA' ).AsString) ;
List.Add('@' + IntToStr(3)) ;
end;
sqlMapaAgrupadas. Next;
end;
end;
//    sqlMapaMesas. Next;
end
else
// se não tiver excedido o tempo limite do config
begin
If (sqlMapaMesas. FieldByName( 'STATUS') .AsString = 'A') then
List.Add('@' + IntToStr(1))
else
List.Add('@' + IntToStr(0)) ;
// se houver mesas agrupadas... adiciona no mapa
If Not (sqlMapaAgrupadas. IsEmpty) then
begin
While Not (sqlMapaAgrupadas. Eof) do
begin
List.Add(sqlMapaAgr upadas.FieldByNa me('MESA' ).AsString) ;
List.Add('@' + IntToStr(2)) ;
sqlMapaAgrupadas. Next;
end;
end;
//    sqlMapaMesas. Next;
end;
sqlMapaMesas. Next;
end;
If (vPassada <> 2) then
vPassada := 2
else
vPassada := 1;
List.SaveToFile( ExtractFilePath( Application. ExeName) + 'Mapa.txt');
List.Free;

// MONTAGEM DO MAPA NA TELA
lvMesas.Items. Clear;
lvMesas.ViewStyle := vsIcon;
sqlMapaMesasIni( 'N', '%');
//********** ********* ********* ********* ********* ********* ********* 
********* ********* *
// aqui ele configura o listview
//********** ********* ********* ********* ********* ********* ********* 
********* ********* *
NewItem := Nil;
lvMesas.Items. Clear;
List2 := TStringList. Create;
Try
List2.LoadFromFile( ExtractFilePath( Application. ExeName) + 'Mapa.txt');
For I := 0 to List2.Count - 1 do
If (List2[I][1] = #9) then
NewItem.SubItems. Add(Trim( List2[I]) )
else if (List2[I][1] = '@') then
NewItem.ImageIndex := StrToIntDef( List2[I][ 2], 0)
else
begin
NewItem := lvMesas.Items. Add;
NewItem.Caption := List2[I];
end;
Finally
List2.Free;
end;
end;

Acontece que agora quero fazer com que uma mesa que esteja sem
atendimento a X minutos seja apresentada com o ícone intermitente, e
confesso que toh apanhando.
Minha idéia era utilizar um Timer que a cada 500 (ciclo de tempo) faria
a conferência das mesas abertas e apenas trocaria o ícone
representantes por uma imagem em branco dando o efeito de
intermitência. Mas não tah dando muito certo.

Se alguém puder me dar uma luz, fico agradecido.

Leonardo Vinicius Freitag    


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a