Ir para conteúdo
Fórum Script Brasil
  • 0

Mensagem De Warning


Paulo Nobre

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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?

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...