Ele mostra a Quantidade nestes ShowMessage e mostra os Valores Corretos ??? Apenas não Atualiza a Quantidade de Linhas atraves do RowCount ??? Quando vc inicia o componente com quantos RowCount ele esta ????
procedure TSCGFiltro.CarregaCamposFiltro; var i: Integer; begin Showmessage('Carrega: ' + IntToStr(FCampos.Count)); if FCampos.Count <= 0 then begin RowCount := 10; end else begin ShowMessage(IntToStr(FCampos.Count)); RowCount := FCampos.Count + 1; for i := 0 to FCampos.Count - 1 do Cells[0, i + 1] := TConfigCampo(FCampos.Objects[i]).DescricaoCampo; end; end; From: fjogassa Sent: Thursday, October 23, 2008 1:49 PM To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] Re: Criacao de Componente (Por favor) Removi alguns métodos para o código ficar menor, por isso acredito que não seja possível compilar o mesmo. O problema está no método CarregaCamposFiltro. unit SCGFiltro; interface uses SysUtils, Classes, Controls, Grids, StdCtrls, Windows, Dialogs, DesignIntF ,DesignEditors, Forms; type TGetEditStyleEvent = procedure (TSender:TObject; ACol,ARow:integer; var EditStyle:TEditStyle) of object; TConfigCampo = class; TSCGFiltro = class(TStringGrid) private FDropdownRowCount : integer; FOnEditButtonClick : TNotifyEvent; FOnGetEditStyle : TGetEditStyleEvent; FOnGetPickListItems : TOnGetPickListItems; FCampoPesquisa: TStringList; FCampoCondicao: TStringList; FCampoDescricao: TStringList; FCampos: TStringList; FConfiguracaoFiltro: TConfigCampo; procedure SetDropdownRowCount(value:integer); procedure SetOnEditButtonClick(value:TNotifyEvent); procedure SetOnGetPicklistItems(value:TOnGetPickListItems); procedure setCampoCondicao(const Value: TStringList); procedure setCampoDescricao(const Value: TStringList); procedure setConfigCampos(const Value: TStringList); procedure setConfiguracaoFiltro(const Value: TConfigCampo); protected function CreateEditor: TInplaceEdit; override; function GetEditStyle(ACol, ARow: integer): TEditStyle; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure AdicionaCampo(pCampo, pDescricao, pTipo: String); function GetFCampos: TStringList; procedure SetFCampos(Value: TStringList); procedure AlterarCampo(pCampo, pDescricao, pTipo: String); procedure RemoverCampo(pCampo: String); procedure CopiaCampos(pAtualizar: Boolean; Value: TStringList); procedure LimpaCampos; procedure LimpaObjetos; procedure setCampoPesquisa(const Value: TStringList); procedure CarregaCamposFiltro; published property DropdownRowCount : integer read FDropDownRowCount write SetDropdownRowCount default 3; property OnEditButtonClick: TNotifyEvent read FOnEditButtonClick write SetOnEditButtonClick; property OnGetEditStyle : TGetEditStyleEvent read FOnGetEditStyle write FOnGetEditStyle; property OnGetPickListItems : TOnGetPickListItems read FOnGetPickListItems write SetOnGetPickListItems; property CampoDescricao: TStringList read FCampoDescricao Write setCampoDescricao; property CampoPesquisa: TStringList read FCampoPesquisa write setCampoPesquisa; property CampoCondicao: TStringList read FCampoCondicao write setCampoCondicao; property ConfiguracaoFiltro: TConfigCampo read FConfiguracaoFiltro write setConfiguracaoFiltro; end; TConfiguracaoCampo = Class(TComponentEditor) private protected public procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): String; override; function GetVerbCount: Integer; override; published end; TConfigCampo = class(TPersistent) private FNomeCampoBanco: String; FTipoCampo: String; FDescricaoCampo: String; procedure setDescricaoCampo(const Value: String); procedure setNomeCampoBanco(const Value: String); procedure setTipoCampo(const Value: String); protected public constructor Create; destructor Destroy; override; published property NomeCampoBanco: String read FNomeCampoBanco write setNomeCampoBanco; property DescricaoCampo: String read FDescricaoCampo write setDescricaoCampo; property TipoCampo: String read FTipoCampo write setTipoCampo; end; var vSCGFiltro: TSCGFiltro; procedure Register; implementation uses SCGConfigCamposTela; procedure Register; begin RegisterComponents('SCG', [TSCGFiltro]); RegisterComponentEditor(TSCGFiltro, TConfiguracaoCampo); end; { TSCGFiltro } procedure TSCGFiltro.AdicionaCampo(pCampo, pDescricao, pTipo: String); var configCampo: TConfigCampo; begin configCampo := TConfigCampo.Create; configCampo.NomeCampoBanco := pCampo; configCampo.DescricaoCampo := pDescricao; configCampo.TipoCampo := pTipo; FCampos.AddObject(pCampo, configCampo); end; procedure TSCGFiltro.AlterarCampo(pCampo, pDescricao, pTipo: String); begin if FCampos.IndexOf(pCampo) > 0 then begin TConfigCampo(FCampos.Objects[FCampos.IndexOf(pCampo)]).DescricaoCampo := pDescricao; TConfigCampo(FCampos.Objects[FCampos.IndexOf(pCampo)]).TipoCampo := pTipo; end else begin Raise Exception.CreateFmt('Campo ' + pCampo + ' não encontrado na lista de campos.', []); end; end; constructor TSCGFiltro.Create(AOwner: TComponent); begin inherited Create(AOwner); SetDropdownRowCount(8); ColCount := 3; RowCount := 2; DefaultRowHeight := 20; ScrollBars := ssVertical; FCampoPesquisa := TStringList.Create; FCampoCondicao := TStringList.Create; FCampoDescricao := TStringList.Create; FCampos := TStringList.Create; Cells[0, 0] := 'Campo'; Cells[1, 0] := 'Condição'; Cells[2, 0] := 'Valor'; ColWidths[0] := 150; ColWidths[1] := 80; ColWidths[2] := 300; CarregaCamposFiltro; end; function TSCGFiltro.CreateEditor: TInplaceEdit; begin Result := TInplaceEditList.Create(self); TInplaceEditList(result).DropdownRows := FDropdownRowCount; TInplaceEditList(result).OnGetPickListItems := FOnGetPickListItems; TInplaceEditList(result).OnEditButtonClick := FOnEditButtonClick; end; destructor TSCGFiltro.Destroy; begin FCampoPesquisa.Free; FCampoCondicao.Free; FCampoDescricao.Free; FCampos.Free; inherited; end; function TSCGFiltro.GetEditStyle(ACol, ARow: integer): TEditStyle; begin Result := esSimple; if Assigned(FOnGetEditStyle) then FOnGetEditStyle(self, ACol, ARow, result); end; function TSCGFiltro.GetFCampos: TStringList; begin Result := nil; if Assigned(FCampos) then Result := FCampos; end; procedure TSCGFiltro.RemoverCampo(pCampo: String); begin if FCampos.IndexOf(pCampo) < 0 then // campo não encontrado Raise Exception.CreateFmt('Campo ' + pCampo + ' não foi encontrado.', []) else begin FCampos.Objects[FCampos.IndexOf(pCampo)].Free; FCampos.Delete(FCampos.IndexOf(pCampo)); end; end; procedure TSCGFiltro.setCampoPesquisa(const Value: TStringList); begin if (Assigned(Value)) and (Value.Count > 0) then FCampoPesquisa.Assign(Value); end; procedure TSCGFiltro.setConfiguracaoFiltro(const Value: TConfigCampo); begin FConfiguracaoFiltro := Value; end; procedure TSCGFiltro.SetDropdownRowCount(value: integer); begin FDropdownRowCount := value; if Assigned(InplaceEditor) then TInplaceEditList(InplaceEditor).DropdownRows := value; end; procedure TSCGFiltro.CarregaCamposFiltro; var i: Integer; begin Showmessage('Carrega: ' + IntToStr(FCampos.Count)); if FCampos.Count <= 0 then begin RowCount := 10; end else begin ShowMessage(IntToStr(FCampos.Count)); RowCount := FCampos.Count + 1; for i := 0 to FCampos.Count - 1 do Cells[0, i + 1] := TConfigCampo(FCampos.Objects[i]).DescricaoCampo; end; end; procedure TSCGFiltro.CopiaCampos(pAtualizar: Boolean; Value: TStringList); var i: Integer; begin if Value.Count > 0 then begin LimpaCampos; for i := 0 to Value.Count - 1 do begin AdicionaCampo( TConfigCampo(Value.Objects[i]).NomeCampoBanco ,TConfigCampo(Value.Objects[i]).DescricaoCampo ,TConfigCampo(Value.Objects[i]).TipoCampo ); end; end; end; procedure TSCGFiltro.SetFCampos(Value: TStringList); begin if Assigned(Value) then FCampos := Value; end; { TConfiguracaoCampo } procedure TConfiguracaoCampo.ExecuteVerb(Index: Integer); var tela: TSCGConfigCamposTelaF; begin Tela := TSCGConfigCamposTelaF.Create(Application); try Tela.showModal; finally FreeAndNil(Tela); end; end; { TConfigCampo } constructor TConfigCampo.Create; begin FTipoCampo := 'S'; // inicialização end; destructor TConfigCampo.Destroy; begin inherited; end; procedure TConfigCampo.setDescricaoCampo(const Value: String); begin FDescricaoCampo := Value; end; procedure TConfigCampo.setNomeCampoBanco(const Value: String); begin FNomeCampoBanco := Value; end; procedure TConfigCampo.setTipoCampo(const Value: String); begin FTipoCampo := Value; end; end. --- Em delphi-br@yahoogrupos.com.br, "BandaLemuel" <[EMAIL PROTECTED]> escreveu > > Fábio > > Vc não tem a propriedade RowCount ???? Poste o Codigo para a gente ver... > > Wesley > > > > > From: fjogassa > Sent: Thursday, October 23, 2008 12:57 PM > To: delphi-br@yahoogrupos.com.br > Subject: [delphi-br] Criacao de Componente (Por favor) > > > Boa tarde, estou criando um componente herdado do StringGrid, e em > dado momento vou alterar o rowCount mais não altera, só altera se eu > removo o componente e insiro novamente. Alguém pode me dizer como faço > para aumentar o número de linhas sem precisar remover e inserir o > componente? > Abraços. > > Obs: Estou utilizando D2007 > > Fábio Jun > Analista/Programador > Maringá - Pr. > > > > > > __________ Information from ESET NOD32 Antivirus, version of virus signature database 3548 (20081023) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > [As partes desta mensagem que não continham texto foram removidas] > __________ Information from ESET NOD32 Antivirus, version of virus signature database 3549 (20081023) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com [As partes desta mensagem que não continham texto foram removidas]