Ajuda - Busca - Membros - Calendário
Versão Completa: DBgrid com varias cores.
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Arrais Júnior
tenho um DBgrid e nele e exibido frases com esse formato NOME [*****] (*****)
eu queria saber se existe como fazer com que o que tivesse entre [ ] ficasse vermelho e o que estivesse dentro de ( ) ficasse verde...

ex: NOME [*****] (*****)

aproveitando....
o WebBrowser possui uma margem padrão na parte superior e na parte esquerda, existe como eu retirar totalmente essas margens??

outra, tipo, eu uso isso para filtrar: adoquery1.Filter := 'NOMEDOCAMPO like ' + #39 + '%' + 'EDIT1.TEXT' + '%' + #39 ;
gostaria de saber como faço para aplicar dois filtros simultaneamente ....porque tipo, quando eu faço uma filtragem e vou passar pra segunda, o segundo filtro toma como base todo o banco de dados, e não apenas os que restaram do primeiro filtro.

obrigado.
Jhonas
relativo a primeira pergunta:

até tem como fazer, mas não com esse DBgrid ... neste caso só daria para colorir o campo todo do registro

relativo a segunda pergunta:

aprenda a trabalhar com select dentro select

http://cristianosalomao.blogspot.com/2007/...-de-select.html

abraço
Arrais Júnior
ok, muito obrigado pelas resposta jhonas, você como sempre, muito atencioso e rapido....

bom...eu li o que você me passou, porem, devido ao fato deu ter iniciado o uso de select agora...ainda não consigo perceber certas coisas....
não consegui resolver o problema de filtrar dentro de um filtro...

eu lembro que há algum tempo, uns 2 anos, eu utilizei um cod que tipo SALVAVA o primeiro filtro, e o segundo filtro era somente em cima dos dados filtrado inicialmente...
eu utilizo para filtrar
if edit1.text = '' then
exit;
adoquery1.Filter := 'nome like ' + #39 + '%' + Edit1.Text + '%' + #39 ;
adoquery1.Filtered := True;

se você puder, tem como me passar o cod de como ficaria para usar dois desses filtros, sendo que o segundo filtro seria aplicado apenas no resultado do primeiro..

obrigado.
Jhonas
QUOTE
se você puder, tem como me passar o cod de como ficaria para usar dois desses filtros, sendo que o segundo filtro seria aplicado apenas no resultado do primeiro..


a lógica é criar uma tabela temporaria com a mesma estrutura da tabela onde será aplicado o primeiro filtro

ao aplicar o filtro na tabela os registros desse filtro deverão ser copiados para a tabela temporaria

nessa tabela temporaria pode-se então aplicar um segundo filtro, onde conterão apenas os registros que voce precisa

OBS: tente fazer, se não conseguir depois eu posto um exemplo

abraço
Arrais Júnior
vlws jhonas, eu tentei, atpe procurei sobre como criar essa tal tabela temporaria, porem, nada!

a logica eu havia entendido.....o problema mesmo e quais componentes usar...qual cod.

tipo...não sei como criar uma tabela temporaria....Oo

vlws...desculpa qualquer coisa..
Arrais Júnior
nossa...já ta com um tempao que tou procurando como fazer isso...já não sei mais como procurar =D

jhonas..uma luz? pls?
Jhonas
2 maneiras:

a primeira usando o ClietDataSet

http://www.inf.ufsc.br/~prass/artigos/artigo07.html

na segunda maneira, voce copia a tabela e depois deleta todos os registros para poder usar ( essa será a tabela temporaria )

CODE
//- Coloque um Button no Form;
//- Altere o evento OnClick deste Button conforme abaixo: }

procedure TForm1.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  I: integer;
  Origem, Destino: string;
begin
  I := FindFirst('c:\Origem\*.*', faAnyFile, SR);
  while I = 0 do begin
  if (SR.Attr and faDirectory) <> faDirectory then begin
  Origem := 'c:\Origem\' + SR.Name;
  Destino := 'c:\Destino\' + SR.Name;
  if not CopyFile(PChar(Origem), PChar(Destino), true) then
  ShowMessage('Erro ao copiar ' + Origem + ' para ' + Destino);
  end;
  I := FindNext(SR);
  end;
end;


OBS: isso é apenas um exemplo, voce terá que fazer as modificações para o seu uso

Outra função que podera usar

CODE
function CopiaEstruturaTabela(TableEmpty:Boolean;FromDir,SrcTblName,ToDir, DestTblName:String): Boolean;
//
// Copia uma tabela podendo ou não levar seu conteúdo para outro lugar
//
// Requer a BDE declarada na clausula uses da unit
//
var
DBHandle        : HDBIDB;
ResultCode      : DBIResult;
Src, Dest       : Array[0..255] of Char;
SrcTbl, DestTbl : TTable;
begin
if (ToDir <> '') and (FromDir <> '') then
  begin
  if (FromDir[length(FromDir)]= '\') then
     begin
     delete(FromDir,length(FromDir),1);
     end;
  if (ToDir[length(ToDir)] = '\') then
     begin
     delete(ToDir,length(ToDir),1);
     end;
  SrcTbl := TTable.Create(nil);
  DestTbl := TTable.Create(nil);
  try
     SrcTbl.DatabaseName := FromDir;
     SrcTbl.TableName := SrcTblName;
     SrcTbl.Open;
     DBHandle := SrcTbl.DBHandle;
     SrcTbl.Close;
     ResultCode := DbiCopyTable(DBHandle,false,
     StrPCopy(Src,FromDir + '\' + SrcTblName),nil, StrPCopy(Dest,ToDir + '\' + DestTblName));
     if (ResultCode <> DBIERR_NONE) then
         begin
         Result := False;
     end
     else
         begin
         if TableEmpty then
            begin
            With DestTbl do
                 begin
                 Close;
                 TableName := DestTblName;
                 DataBaseName := ToDir;
                 Exclusive := True;
                 EmptyTable;
                 Exclusive := False;
                 end;
            end;
         Result := True;
         end;
  finally
     SrcTbl.Free;
     DestTbl.Free;
  end;
  end;
end;


abraço
Arrais Júnior
ahhh dor de cabeça....kkkkk

tou usando o modelo
CODE
procedure TForm1.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
  I: integer;
  Origem, Destino: string;
begin
  I := FindFirst('c:\Origem\*.*', faAnyFile, SR);
  while I = 0 do begin
  if (SR.Attr and faDirectory) <> faDirectory then begin
  Origem := 'c:\Origem\' + SR.Name;
  Destino := 'c:\Destino\' + SR.Name;
  if not CopyFile(PChar(Origem), PChar(Destino), true) then
  ShowMessage('Erro ao copiar ' + Origem + ' para ' + Destino);
  end;
  I := FindNext(SR);
  end;
end;


problemas....tipo...ele tah copiando o arquivo de banco de dados...porem copia o arquivo completo...
se eu filtrar a tabela...e depois salvar o banco temporario, ele ficara igual o arquivo original...

...bem...tou muito confuso com isso tudo...não tenho noçao de como fazer...

mesmo assim..obrigado pela ajuda jhonas vou levar a frente a aplicaçao sem utilizar dois filtros...

Arrais Júnior
TIPO...vou citar a aplicaçao que desejava fazer...
tipo....uma grid exibindo o banco de dados que possui 2 campos
NOME e TIPO

existe 3 radiobuttons, FILMES, SERIADOS e ANIMES

quando eu clicasse em um dos radiobuttons, seria aplicado o primeiro filtro...observando o campo TIPO
ok...ate ai ok..

ai teria um EDIT onde eu iria fazer o segundo filtro que observaria o CAMPO NOME....se limitando a filtrar apenas os dados que estao na grid, a qual já foi filtrada anteriormente.

bem..e isso...vlws
Jhonas
Voce já disvirtuou complentamente do tópico inicial que era DBgrid com varias cores

problemas....tipo...ele tah copiando o arquivo de banco de dados...porem copia o arquivo completo...

'c:\Origem\*.*' usando coringas ele copia todos os arquivos

Ou voce faz assim usando tabela temporaria ou pode usar sql para filtrar os registros

abraço
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.