Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Ago 09, 2019 11:09 am Assunto: Formulario Herança? |
|
|
Tenho um formulario que criei que contém constante
Código: | const
ColunaA = 8; /// Ref as colunas do dbgrid
ColunaE = 9; /// Ref as colunas do dbgrid |
E no evento abaixo o codigo
Código: | procedure TfrmHerdeiroLista.dbgridListaMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Cell: TGridCoord;
begin
with TdbGrid(Sender) do
begin
Cell := MouseCoord(X, Y);
case Cell.X of
ColunaA .. ColunaE :
Cursor := crHandPoint;
else
Cursor := crDefault;
end;
end;
end; |
Quero reaproveitar este codigo nos formularios que herdar deste, porém a constante muda cfe formulario.
Como fazer? _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
marcieldeg Colaborador
Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Sáb Ago 10, 2019 11:35 pm Assunto: |
|
|
No seu form base, crie um método abstrato:
Código: | protected
function GetConstants: array of Integer; abstract; |
Mude sua função para usar esse array ao invés das constantes:
Código: | function ContainsValue(Array: array of Integer; Value: Integer): Boolean;
var
I: Integer;
begin
for I := Low(Array) to High(Array) do
if Array[I] = Value then
Exit(True);
Result := False;
end;
procedure TfrmHerdeiroLista.dbgridListaMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Cell: TGridCoord;
begin
with TdbGrid(Sender) do
begin
Cell := MouseCoord(X, Y);
if ContainsValue(GetConstants, Cell.X) then
Cursor := crHandPoint
else
Cursor := crDefault;
end;
end; |
Então, nos seus forms que herdarem, implemente o método GetConstants para retornar os valores pertinentes ao form. _________________ "Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!" |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Ago 12, 2019 8:18 am Assunto: |
|
|
marcieldeg escreveu: | No seu form base, crie um método abstrato:
Código: | protected
function GetConstants: array of Integer; abstract; |
Mude sua função para usar esse array ao invés das constantes:
Código: | function ContainsValue(Array: array of Integer; Value: Integer): Boolean;
var
I: Integer;
begin
for I := Low(Array) to High(Array) do
if Array[I] = Value then
Exit(True);
Result := False;
end;
procedure TfrmHerdeiroLista.dbgridListaMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Cell: TGridCoord;
begin
with TdbGrid(Sender) do
begin
Cell := MouseCoord(X, Y);
if ContainsValue(GetConstants, Cell.X) then
Cursor := crHandPoint
else
Cursor := crDefault;
end;
end; |
Então, nos seus forms que herdarem, implemente o método GetConstants para retornar os valores pertinentes ao form. |
Olá marcieldeg, eu tentei executar mais não deu certo.
Essa função
Código: | function GetConstants: array of Integer; abstract; | Meu Delphi não esta reconhecendo.
E essa também não
Código: | function ContainsValue(Array: array of Integer; Value: Integer): Boolean; |
Essa até mudei
Código: | function TfrmHerdeiroLista.ContainsValue(a: array of Integer; Value: Integer): Boolean;
var
I: Integer;
begin
for I := Low(a) to High(a) do
if a[I] = Value then
Exit(True);
Result := False;
end; |
Ai compila, mais a outra não consegui compilar a de modo abstract
Obrigado. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Ago 12, 2019 5:08 pm Assunto: |
|
|
Acho que resolveu assim
Código: | type
TIntArray = array of Integer; |
Código: | function GetConstants: TIntArray; virtual; abstract; |
Código: | function ContainsValue(a: array of Integer; Value: Integer): Boolean;
var
I: Integer;
begin
for I := Low(a) to High(a) do
if a[I] = Value then
Exit(True);
Result := False;
end; |
E no seu filho
Código: | function GetConstants: TIntArray; override; |
Código: | function TfrmListaContato.GetConstants: TIntArray;
begin
/// Defino o tamanho do array
SetLength(Result, 2);
Result[0] := 8;
Result[1] := 9;
end; |
Parece q deu certo _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
|