Imagem em dbgrid mestre detalhe
Tenho uma grid mestre e outra detalhe. Na grid mestre tenho um campo onde tem uma imagem de + quando clico aparece outra grid detalhe e muda a imagem para -.
Só que quando clico na imagem - ela some.
Mas deveria mudar para a imagem + e sumir com a grid detalhe.
Se alguém puder me ajudar eu agradeço, segue o endereço das imagens e do fonte:
http://img27.imageshack.us/i/imagem2sjp.png/
http://img528.imageshack.us/i/imagem1o.png/
http://rapidshare.com/files/251187945/DBGridMD.rar.html
Só que quando clico na imagem - ela some.
Mas deveria mudar para a imagem + e sumir com a grid detalhe.
Se alguém puder me ajudar eu agradeço, segue o endereço das imagens e do fonte:
http://img27.imageshack.us/i/imagem2sjp.png/
http://img528.imageshack.us/i/imagem1o.png/
http://rapidshare.com/files/251187945/DBGridMD.rar.html
Leufmt
Curtidas 0
Respostas
Leufmt
02/07/2009
sobe
GOSTEI 0
Lehapan
02/07/2009
Olá leufmt,
Estou lhe pasando o meu código que utilizo para desenhar o campo CheckBox no DBGrid, tentei fazer algo parecido com o seu código, mas de uma olhada para ver se não precisa de alguns ajustes, pois não testei o código.
Espero ter ajudado[/code]
Estou lhe pasando o meu código que utilizo para desenhar o campo CheckBox no DBGrid, tentei fazer algo parecido com o seu código, mas de uma olhada para ver se não precisa de alguns ajustes, pois não testei o código.
dbgrTeste -> TDBGrid
Campo "T" deve ser do tipo inteiro
procedure dbgrTesteCellClick(Column: TColumn);
begin
with cdsTeste do
begin
if not IsEmpty then
begin
if Column.Field = FindField(´T´) then
begin
Edit;
FieldByName(´T´).AsInteger := Abs( FieldByName(´T´).AsInteger - 1 );
Post;
end
;
end
;
end;
end;
procedure dbgrTesteDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if UpperCase(Column.FieldName) = UpperCase(´T´) then
ImagemCheckBoxDBGrid( dbgrTeste, Rect, Column, State, ´1´, False, ImageList1 )
;
end;
{ Desenha a imagem do CheckBox na coluna do DBGrid, conforme o valor do campo
que está sendo passado como parâmetro (ValorChecked) }
procedure ImagemCheckBoxDBGrid( DBGrid: TDBGrid; Rect: TRect; Column: TColumn;
State: TGridDrawState; ValorChecked: string; AjustaAltura: Boolean = False;
ImageList: TImageList);
Const
IMG_UNCHECKED = 0;
IMG_CHECKED = 1;
var
PosLeft, PosTop: integer;
begin
if Column.Field.AsString <> ´´ then
begin
DBGrid.Canvas.FillRect(Rect);
{ Tenta posicionar a imagem do CheckBok no centro da coluna,
independentemente da largura }
PosLeft := Round( (column.Width - ImageList.Width) / 2 );
if not AjustaAltura then
PosTop := 1
else
PosTop := Round( (Rect.Bottom - Rect.Top) / 2 ) - 6;
;
if Column.Field.AsString = ValorChecked then
ImageList.Draw(
DBGrid.Canvas, Rect.Left + PosLeft, Rect.Top + PosTop, IMG_CHECKED )
else
ImageList.Draw(
DBGrid.Canvas, Rect.Left + PosLeft, Rect.Top + PosTop, IMG_UNCHECKED )
;
end
;
end;
Espero ter ajudado[/code]
GOSTEI 0
Leufmt
02/07/2009
Obrigado pela atenção, mas não é isto que estou querendo
GOSTEI 0