Ir para conteúdo
Fórum Script Brasil

Samuel Sewaybricker

Membros
  • Total de itens

    20
  • Registro em

  • Última visita

Sobre Samuel Sewaybricker

Samuel Sewaybricker's Achievements

0

Reputação

  1. Olá pessoal. Estou com a seguinte situação, tenho um ADOQuery e ClientDataSet linkados, tudo está certinho, o problema é que tem um campo blob e com o blobType igual a ftMemo. Este blob está ligado a um DBMemo, o problema ocorre quando vou dar o post do dataset, número Hex inválido, a solução para isso fiz uma função que converte o texto string do memo e converte para hexadecimal, com isso o fluxo segue normalmente. Contudo fiz um teste onde após o post eu retorno para a tela do registro e como a função converteu o meu texto do memo para hexa o memo mostra o value convertido rs. Analisei melhor e vi que tinha que fazer essa conversão antes do update final do registro, então no meu DataSetProvider eu utilizei o evento BeforeUpdateRecords, ai ficou "100%". Com apenas um campo blob ficou show, o problema atual que peço a ajuda de vocês é o seguinte, quando a query possui mais de um blob(3 por exemplo) quando chega na atribuição do valor convertido, eu não sei como e nem porque, o valor do último campo blob some, fica nulo! Isso que nem chegou nesse campo ainda para converter. Depurei todos passos do DBClient, DB, ADODB e nada. alguém já passou por isso ou sabe algo que possa iluminar?? Segue o código do evento, note que não é feito nada de mais que possa interferir no valor do campo até que chegue a vez dele de converter: procedure TRDataSetProvider.CustomDataSetProviderBeforeUpdateRecord( Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); var i : integer; function IsConnectedToOracle(Source: TRADOQuery): Boolean; begin Result := (Pos('ORACLE', UpperCase(Source.Connection.Provider))>0); end; begin if (UpdateKind <> ukDelete) and IsConnectedToOracle(TRADOQuery(SourceDS)) then begin for i := 0 to DeltaDs.FieldCount - 1 do begin if (DeltaDs.Fields.Fields[i] is TBlobField) and (TBlobField(DeltaDs.Fields.Fields[i]).BlobType = ftMemo) then begin if DeltaDs.Fields.Fields[i].NewValue <> Unassigned then begin DeltaDS.Edit; DeltaDs.Fields.Fields[I].Value := StringToHexa(DeltaDS.Fields.Fields[I].Value); DeltaDS.Post; end; end; end; end; end;
  2. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado pela resposta Jhonas, mas a dúvida em si não seria como trazer o form e sim como montar o evento do click, no entanto eu resolvi, segue os códigos: - Método do click do menu dinâmico: procedure TForm1.ClickButton(Sender: TObject); Var vForm : TForm; i,p: Integer; begin vForm := TForm(FindControl(HWnd(TMenuItem(Sender).Tag))); if vForm <> nil then begin vForm.BringToFront; vForm.WindowState := wsMaximized; //teste(TMenuItem(Sender)); end; end; - Exibição dos menus de acordo com os forms abertos: procedure TForm1.ExibirMenu; var NewItem : TMenuItem; i,j,p : Integer; begin for i := 0 to self.MDIChildCount-1 do begin //Verificar se o menu já existe para não recria-lo for j:=0 to XPMainMenu1.Items[2].Count -1 do begin p := CompareStr(XPMainMenu1.Items[2].Items[j].Name, Self.MDIChildren[i].Name); if p = 0 then abort; end; XPMenu1.Active := False; NewItem := TMenuItem.create(XPMainMenu1); NewItem.Name := Self.MDIChildren[i].Name; NewItem.Caption := Self.MDIChildren[i].Caption; NewItem.Tag := Self.MDIChildren[i].Handle; NewItem.OnClick := ClickButton; XPMainMenu1.Items[2].Insert(XPMainMenu1.Items[2].Count, NewItem); XPMenu1.Active := True; end; end;
  3. Olá a todos, estou com seguinte situação, no meu sistema preciso usar o toolbar e relacionar o mainmenu nele, isso porque consigo alterar a posição do menu em tela (altop, albottom, etc), o meu formulario principal é um MDIForm e na propriedade WindowMenu está o menu no qual irá fazer o controle das telas abertas, porém não funciona, se eu tiro a referencia do menu no toolbar o mesmo volta a funcionar. Alguma sugestão? Já tentei 'fazer' esse controle dos formularios abertos dinamicamente, mas não sei como vou referenciar o evento OnClick para trazer o formulario para frente. Desde já agradeço.
  4. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Jhonas obrigado pelas respostas, mas menu lateral também não posso adotar. Contudo eu consegui resolver minha situação, utilizei o componente TXPMenuBar e o TXPMenu(para dar um layout melhorzinho) e voltei a utilizar o TMainMenu. No XPMenuBar referencia o MainMenu, ai o mesmo carrega dentro da sua estrutura e nela é possivel alterar o posicionamento dele em tela. Obrigado pela paciência e respostas.
  5. Resolvi o problema, porém tratei de uma forma diferente. Ao invés de utilizar o componente TImage ou MDIImage utilizei o componente TMDIWallpaper, removi o TImage e nesse componente você linka a imagem e quando iniciado a aplicação a imagem carrega automaticamente. Um revés deste componente é que só pode ser linkado um Bitmap, e o tamanho de um arquivo bmp é alto e pode causar problemas de desempenho, para sanar isso reescrevi o código do componente trocando as instancias de TBitmap para TJPEGIMage e ajustando onde necessário. O tópico pode ser marcado como resolvido, qualquer dúvida quanto a implementação do JPG neste componente só avisar. Abraço.
  6. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> A imagem tem as seguintes dimensões: 1920x1200
  7. No meu projeto o form principal é fsMDIForm, e nele possuo um TImage AllClient contendo o logo do sistema, acima tenho uma barra de favoritos que é criada dinamicamente e que quando chega a quantidade limite cria um dropdown listando a quantidade que excedeu. O problema é quando clico nesse dropdown a imagem do fundo da uma piscada, já pesquisei e encontrei as soluções de Doublebuffer, setar para true a propriedade IncrementalDisplay do componente mas ambos sem sucesso. Alguma outra solução para resolver este problema? Abaixo imagem do dropdown, lembrando que o mesmo é gerado dinamicamente porém de forma automática quando chega no tamanho limite da barra de favoritos. https://uploaddeimagens.com.br/imagens/teste-jpg--271
  8. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado pela resposta, mas não funcionou. Retire o que eu disse, OBRIGADO!! Resolvido
  9. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado pela resposta, mas não funcionou.
  10. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Se eu retirar este comando a mensagem tratada não irá aparecer, somente o raise. O que estou tentando fazer é a situação contrária, não aparecer a mensagem do raise e sim a do AppEvent.
  11. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado pela ajuda mas não é essa solução que preciso..
  12. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Sim, preciso mostrar a mensagem para o usuário.
  13. procedure TMainForm.AppEvents1Exception(Sender: TObject; E: Exception); var Msg: TMensagemErroForm; begin try Msg := TMensagemErroForm.Create(Application); ERROFECH := False; {if E is EODBC then begin if (EODBC(E).Native = 0) and (EODBC(E).State = 'HY106') and (EODBC(E).RetCode=-1) then BEGIN ERROFECH := True; exit; END; end;} if E.ClassNameIs('Exception') then begin Msg.Mensagem0.Caption := E.Message; Msg.Mensagem1.Caption := ''; Msg.Original.Lines.Clear; if(TABELATUR <> '') THEN Log_Sistema(MainForm.EmpresaFilial, TABELATUR, operacaotur, PEDTURNUM, MENSAGEMERRO, E.Message ); Msg.ShowModal; end; finally Msg.Free; end; end;
  14. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Mas como vou forçar o erro sem o raise? O AppEvents é acionado no onException, não sei se ajuda, mas estou convertendo o sistema de delphi4 para delphi7, no 4 não tenho esse problema.
  15. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Por exemplo, no validate de um campo eu verifico se já existe o código que estou tentando inserir, caso viole esta regra eu dou um raise Exception.Create('Mensagem'); Este raise vai para AppEvents onde é tratado e exibido em um modal, até ai tudo certo, o problema é que após o OK da mensagem a mesma é exibida novamente porém com o formato do raise. Segue imagens: Imagem do AppEvents https://uploaddeimagens.com.br/imagens/erro1-png--22 Imagem do erro repitido https://uploaddeimagens.com.br/imagens/erro2-png--33 Desde já agradeço.
×
×
  • Criar Novo...