Paulo Nobre Postado Março 19, 2006 Denunciar Share Postado Março 19, 2006 Prezados Colegas,Estou usando o componente ShellTreeView para fazer uma caixa de diálogo.Na hora de compilar aparece a seguinte mensagem:[Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platformSó funcionará na plataforma XP?Terei problemas ao rodar o programa no Windows 98 e ME?Uma outra dúvida(pertinente ao mesmo projeto) é a seguinte:A caixa de diálogo acima foi feitana mão, porém li uma vez não sei onde que existe a função SHBrowseForFolderComo posso acessá-la?Ela está em alguma Unit ou é da Api?Alguém poderia me fornecer um exemplo simples de código?Com está função pararei de receber a mensagem de warning acima?Muito obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 19, 2006 Denunciar Share Postado Março 19, 2006 Dê uma olhada nestes exemplos:http://delphi.about.com/od/windowsshellapi/l/aa070400a.htmhttp://www.cryer.co.uk/brian/delphi/howto_...seforfolder.htmE você encontrará muitos outros procurando no Google também.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 19, 2006 Autor Denunciar Share Postado Março 19, 2006 Obrigado Graymalkin,Olhei o código do segundo link e fiquei na dúvida:Em que parte do código eu conseguiria (se e que é possível alterar) mudar o título da caixa de diálogo(caption do form), ou seja tirar aquele Brouse for folder que aparece e colocar algo que eu queira. uses ShellAPI, ShlObj; ... function BrowseDialog (const Title: string; const Flag: integer): string; var lpItemID : PItemIDList; BrowseInfo : TBrowseInfo; DisplayName : array[0..MAX_PATH] of char; TempPath : array[0..MAX_PATH] of char; begin Result:=''; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); with BrowseInfo do begin hwndOwner := Application.Handle; pszDisplayName := @DisplayName; lpszTitle := PChar(Title); ulFlags := Flag; end; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := TempPath; GlobalFreePtr(lpItemID); end; end; Pelo que entendi o title que aparece no código não é o caption da janela e sim o texto que pode aparecer acima da árvore de diretórios. Correto?Além disso como faria(desculpe a pergunta idiota talvez) faria para ao clicar no ok, tranferir o caminho para um txt, por exemplo. E a última pergunta seria, insistindo:CODE [Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platform Só funcionará na plataforma XP?Terei problemas ao rodar o programa no Windows 98 e ME?Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 19, 2006 Autor Denunciar Share Postado Março 19, 2006 Pelo que entendi o title que aparece no código não é o caption da janela e sim o texto que pode aparecer acima da árvore de diretórios. Correto?Percebi o óbvio:O caption não pode ser mudado, pois já vem com o programa(mostrar a caixa de diálogo).Além disso como faria(desculpe a pergunta idiota talvez) faria para ao clicar no ok, tranferir o caminho para um txt, por exemplo.Em relação a segunda pergunta já vi como fazer basta fazer uma chamada a função.A terceira pergunta continua em aberto:CODE [Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platform Só funcionará na plataforma XP?Terei problemas ao rodar o programa no Windows 98 e ME?Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 19, 2006 Denunciar Share Postado Março 19, 2006 Opa, demorei tanto que você já até resolveu o caso. De qualquer maneira, não posso ajudar quanto a 3ª pergunta porque realmente nunca utilizei tal controle.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 20, 2006 Autor Denunciar Share Postado Março 20, 2006 Obrigado Graymalkin,Vamos ver se alguém que já usou o componente sabe dizer alguma coisa.AbraçosPaulo Nobre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Março 20, 2006 Denunciar Share Postado Março 20, 2006 [Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platformQuer dizer que é específico na VCL e não na CLX; ou seja; somente para Windows e não para Linux. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 20, 2006 Autor Denunciar Share Postado Março 20, 2006 Esta foi uma super dica(s3c), pois já havia feito um desvio no programa(If XP...), ou seja,achando eu que era para Xp e não XP, tinha feito uma caixa de dialógo personalizada para XP(usando o Treewiew) e caso não fosse(XP) chamava a caixa padrão via BrowseFor Folders.Alguém poderia pensar porque não colocar tudo chamando via BrowserFor Folders.POde parecer frescura, mas todos os formulários do programa tem uma cor(azul) inclusive a caixa personalizada que criei, porém a do próprio windows vem na cor padrão do sistema.As "únicas" vantagens da do windows são:Alguns segundos de rapidez a mais para abrir epoder colocar um botão Make to folder através de um parÂmetro adicional.Mas acho que poderei criar está possibilidade na minha também.Obrigadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 22, 2006 Autor Denunciar Share Postado Março 22, 2006 Existe uma maneira de coibir o aparecimento da mensagem de Warning, só neste projeto em questão, já que não se trata de um programa para LINUX? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 22, 2006 Denunciar Share Postado Março 22, 2006 Sim.tem 2 formasuma no começo da UNIT, pode ser em qualquer lugar mas melhor no começo coloque{$WARN SYMBOL_PLATFORM OFF}Este é específico para esse aviso de Plataforma, Win, Linuxoutro jeito, q pode te servir futuramente para qualquer warning tipoWarning - bla bla bla sidened both operand auhahua qm nunca viu isso então, ai você fazum exemplo desse warning q faleitypeTMyType = (Um = 1, Dois = 2, Tres = 3, Todos = Um or Dois or Tres);então pra sumir o warning você faztype{$WARNINGS OFF} //Desliga avisosTMyType = (Um = 1, Dois = 2, Tres = 3, Todos = Um or Dois or Tres);{$WARNINGS ON} //Liga avisosNão precisa ligar os avisos novamente, e você pode também no começo da Unit colocar {$WARNINGS OFF}, o que não é recomendávelabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 22, 2006 Autor Denunciar Share Postado Março 22, 2006 Valeu Churc,Muito boa a sua dica.ObrigadoAbraçosPaulo Nobre Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 24, 2006 Autor Denunciar Share Postado Março 24, 2006 uma no começo da UNIT, pode ser em qualquer lugar mas melhor no começo coloque{$WARN SYMBOL_PLATFORM OFF}Churc, coloquei no começo, depois em outros lugares, e não funcionou.Alguém tem alguma idéia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Março 24, 2006 Denunciar Share Postado Março 24, 2006 Tente ir em: Project/Options/CompilerLá tem um Groupbox "Messages"; desflegue o check-box "Show warnings" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 24, 2006 Autor Denunciar Share Postado Março 24, 2006 Ok, s3c, acho que assim vai funcionar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 24, 2006 Denunciar Share Postado Março 24, 2006 Pra cada unit que tiver algo relacionado a plataforma você precisa desligar os warnings de plataforma da maneira q o sec falou desliga todos os warnings, o que na minhaopinião nem é recomendável...abs Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Março 24, 2006 Denunciar Share Postado Março 24, 2006 Isso mesmo, a opção desliga todos os warnings do projeto.Acho que para desligar warnings específicos nas units não é "SYMBOL_PLATFORM" e sim "UNIT_PLATFORM" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 24, 2006 Denunciar Share Postado Março 24, 2006 {$WARN SYMBOL_PLATFORM OFF}eu uso este rsrsesse de UNIT_PLATFORM nunca testei vo ver se funciona também Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Março 24, 2006 Autor Denunciar Share Postado Março 24, 2006 Acho que entendi Churc, na realidade colcoquei a sua dica no form principal, mas o shelltreeview, componente que causa o problema, está num outro form.Vou ver se coma mudança funciona. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 25, 2006 Denunciar Share Postado Março 25, 2006 ahh Paulo é isso mesmo, tem que ser colocado na Unit onde se encontra o símbolo de plataforma...abs Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
Prezados Colegas,
Estou usando o componente ShellTreeView para fazer uma caixa de diálogo.
Na hora de compilar aparece a seguinte mensagem:
Só funcionará na plataforma XP?
Terei problemas ao rodar o programa no Windows 98 e ME?
Uma outra dúvida(pertinente ao mesmo projeto) é a seguinte:
A caixa de diálogo acima foi feitana mão, porém li uma vez não sei onde que existe a função
Como posso acessá-la?
Ela está em alguma Unit ou é da Api?
Alguém poderia me fornecer um exemplo simples de código?
Com está função pararei de receber a mensagem de warning acima?
Muito obrigado.
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.