-
Total de itens
20 -
Registro em
-
Última visita
Posts postados por Samuel Sewaybricker
-
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tente
MdiChild.BringToFront();
MdiChild.Focus();
abraço
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;
-
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tente esse link
menu lateral
abraço
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.
-
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
qual é o tamanho da imagem que esta usando ?
A imagem tem as seguintes dimensões: 1920x1200
-
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tente isso:
va no Menu do delphi > Tools > Debugger Options...
desmarque Integrated debugging
compile e rode o programa
com isso somente as mensagens do AppEvent é que serão mostradas
abraço
Obrigado pela resposta, mas não funcionou.
Retire o que eu disse, OBRIGADO!!
Resolvido
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tente isso:
va no Menu do delphi > Tools > Debugger Options...
desmarque Integrated debugging
compile e rode o programa
com isso somente as mensagens do AppEvent é que serão mostradas
abraço
Obrigado pela resposta, mas não funcionou.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tire esse comando
Msg.ShowModal;
faça o teste e retorne o resultado
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
faça um teste com esse código .... o erro gerado vai para um arquivo de log
faça algumas alterações para o seu uso
procedure TApres.ApplicationEvents1Exception(Sender: TObject; E: Exception); var NomeDoLog: string; Arquivo: TextFile; begin NomeDoLog := ChangeFileExt(Application.Exename, '.log'); AssignFile(Arquivo, NomeDoLog); if FileExists(NomeDoLog) then Append(arquivo) { se existir, apenas adiciona linhas } else ReWrite(arquivo); { cria um novo se não existir } try WriteLn(arquivo, DateTimeToStr(Now) + ':' + E.Message); WriteLn(arquivo,'----------------------------------------------------------------------'); Application.ShowException(E); finally CloseFile(arquivo) end; end;
abraço
Obrigado pela ajuda mas não é essa solução que preciso..
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
existe a necessidade de mostrar o erro para o usuario ou voce gostaria de guardar as mensagens de erro em um arquivo de log ?
Sim, preciso mostrar a mensagem para o usuário.
-
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; -
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
faça um teste
tire o raise Exception.Create('Mensagem');
e veja o que ocorre
obs: siga a execução do código com o break point ( debugger )
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
Dê um exemplo do erro e da mensagem de erro
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.
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
para muitos itens de Menu, experimente usar o TreeView
http://stackoverflow.com/questions/18802327/how-to-copy-part-of-a-treeview-to-a-menu
abraço
Obrigado pela resposta, mas não posso adotar essa solução de TreeView.
-
Olá a todos.
Estou com um problema em minha aplicação na qual quando ocorre algum erro sistêmico o mesmo é tratado pelo AppEvent, ai a mensagem aparece normal, porém logo após o OK é lançado a mesma mensagem mas como erro do Delphi.
Alguma sugestão?
-
<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
tem esses componentes da tmssoftware para delphi
http://www.tmssoftware.biz/Download/Manuals/TMS%20Advanced%20Toolbars%20and%20Menus.pdf
http://www.tmssoftware.com/site/advtoolbar.asp
http://www.tmssoftware.com/site/advmenu.asp
outra opção
http://www.devmedia.com.br/criando-um-menu-com-listview-e-treeview/19044
abraço
Olá Jhonas, tentei ambos possuem um menu muito bom, porém sem a propriedade Align :(((
Help!
-
Vou checar as opções e validar.
Obrigado!
-
Olá a todos.
Estou desenvolvendo uma aplicação desktop e por questões de layout não pude utilizar o componente MainMenu, isso porque o mesmo não oferece a opção de alterar o seu Align no formulario(por default e sem poder alterar ele já fica alTop), como solução utilizo o ActionManager>ActionMenuBar.
Até então tudo perfeito, o layout ficou dez, entretanto eis que surge o problema, o sistema(ERP) contém muitos itens de menu, e o ActionMenuBar "buga", dependendo da quantidade de itens ele começa a listagem no meio do form, as vezes do último item e sobe, mas isso até então não seria tão grave, o problema é que quando tem uma quantidade alta ele "come" os menus e não os mostra por completo, já fiz uma "limpeza" pra diminuir a quantidade mas já não sei o que fazer.
alguém já passou por essa situação ou tem alguma ideia do que possa ser feito?
Desde já agradeço.
[ADO] Campo BLOB
em Delphi, Kylix
Postado
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: