Converter um String

Delphi

05/08/2011

Galera, boa tarde.Estou tentando criar um menu de acesso rapido e esbarrei em uma situação.
Tenho no meu banco de dados, o nome da action onde esta o procedimento para chamar o form.
varB : TSpeedButton;largura : Integer;begin  with TZReadOnlyQuery.Create(nil) do  try    Connection := DmPrincipal.MyDB;    sql.Add('SELECT B.ACTION, B.DESCRICAO '+            'FROM ' +            'TBLUSUARIOMODULOACESSO A, TBLMODULOACESSO B ' +            'WHERE ' +            'A.IDMODULOACESSO=B.IDMODULOACESSO AND ' +            'A.ACESSORAPIDO=0 AND ' +            'B.ACESSORAPIDO=0 AND ' +            'A.IDUSUARIO=:CIDCHAVES');    ParamByName('cidchaves').AsInteger := DmPrincipal.qryusuariocidchaves.AsInteger;    Open;    First;    largura:=0;    while not Eof do    begin      b           := TSpeedButton.Create(Application);      b.Parent    := pnlacessorapido;      b.Height    := 40;      b.Left      := largura;      b.Width     := pnlacessorapido.Width;      b.Action    := FieldByName('descricao').AsString;{erro acorre aqui}      b.ShowHint  := True;      b.Hint      := FieldByName('descricao').AsString;      b.Caption   := '';      b.NumGlyphs := 1;      b.Flat      := True;      b.Tag       := 1;      largura     := largura+40;      Next;    end;  finally    free;  end;
como faço para converter string em um tbaseaction?
Agua Cascatai

Agua Cascatai

Curtidas 0

Respostas

Agua Cascatai

Agua Cascatai

05/08/2011

Nínguem pode me ajudar?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

05/08/2011

uma forma:

b.Action    := FindComponent(FieldByName('descricao').AsString);

GOSTEI 0
Agua Cascatai

Agua Cascatai

05/08/2011

Dessa forma nao funfou
GOSTEI 0
Wilson Junior

Wilson Junior

05/08/2011

As Actions estão localizadas na mesma unit de onde você está executando este comando?
GOSTEI 0
Agua Cascatai

Agua Cascatai

05/08/2011

Emerson, valeu pela ajudada forma em que colocou nao funcionou, porem me fez lembrar de dar um cast, entao ficou assim
      b.Width     := pnlacessorapido.Width;      b.Action    := TAction(Self.FindComponent(FieldByName('ACTION').AsString));      b.ShowHint  := True;      b.Hint      := FieldByName('descricao').AsString;

Assim funcionou
GOSTEI 0
POSTAR