• 0
Sign in to follow this  
Paulo Nobre

Mensagem De Warning

Question

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 platform

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

SHBrowseForFolder

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.

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts

  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

Obrigado Graymalkin,

Vamos ver se alguém que já usou o componente sabe dizer alguma coisa.

Abraços

Paulo Nobre

Share this post


Link to post
Share on other sites
  • 0
[Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platform
Quer dizer que é específico na VCL e não na CLX; ou seja; somente para Windows e não para Linux.

Share this post


Link to post
Share on other sites
  • 0

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 e

poder 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

Share this post


Link to post
Share on other sites
  • 0

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?

Share this post


Link to post
Share on other sites
  • 0

Sim.

tem 2 formas

uma 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, Linux

outro jeito, q pode te servir futuramente para qualquer warning tipo

Warning - bla bla bla sidened both operand auhahua qm nunca viu isso então, ai você faz

um exemplo desse warning q falei

type

TMyType = (Um = 1, Dois = 2, Tres = 3, Todos = Um or Dois or Tres);

então pra sumir o warning você faz

type

{$WARNINGS OFF} //Desliga avisos

TMyType = (Um = 1, Dois = 2, Tres = 3, Todos = Um or Dois or Tres);

{$WARNINGS ON} //Liga avisos

Não precisa ligar os avisos novamente, e você pode também no começo da Unit colocar {$WARNINGS OFF}, o que não é recomendável

abraços

Share this post


Link to post
Share on other sites
  • 0

Valeu Churc,

Muito boa a sua dica.

Obrigado

Abraços

Paulo Nobre

Share this post


Link to post
Share on other sites
  • 0

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?

Share this post


Link to post
Share on other sites
  • 0

Tente ir em: Project/Options/Compiler

Lá tem um Groupbox "Messages"; desflegue o check-box "Show warnings"

Share this post


Link to post
Share on other sites
  • 0

Pra cada unit que tiver algo relacionado a plataforma você precisa desligar os warnings de plataforma smile.gif

da maneira q o sec falou desliga todos os warnings, o que na minha

opinião nem é recomendável...

abs

Share this post


Link to post
Share on other sites
  • 0

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"

Share this post


Link to post
Share on other sites
  • 0

{$WARN SYMBOL_PLATFORM OFF}

eu uso este rsrs

esse de UNIT_PLATFORM nunca testei vo ver se funciona também

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

ahh Paulo é isso mesmo, tem que ser colocado na Unit onde se encontra o símbolo de plataforma...

abs

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this