Cancelar fechamento do form Não deixar mudar o tamanho
1 - Preciso checar alguns valores no evento OnClose do form. Caso esses valores forem ´x´ devo cancelar o fechamento do form nesse mesmo evento. Dá pra fazer isso?
2 - Deixei o Form como maxmized e tirei o botao maximizar (para o usuario nao restaura-lo) quando clico duas vezes no form ele diminui e não volta mais. Alguem jah deve ter passado por isso, como proceder para que isso nao aconteça.
Obrigado pelas duas ..... :D
2 - Deixei o Form como maxmized e tirei o botao maximizar (para o usuario nao restaura-lo) quando clico duas vezes no form ele diminui e não volta mais. Alguem jah deve ter passado por isso, como proceder para que isso nao aconteça.
Obrigado pelas duas ..... :D
M@gnun
Curtidas 0
Respostas
Adriano Santos
08/05/2006
Use o onCloseQuery pra isso, é mais fácil veja:
É só passar um valor False para o CanClose;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var A : Integer; begin A := 0; CanClose := A = 0; end;
É só passar um valor False para o CanClose;
GOSTEI 0
Paullsoftware
08/05/2006
[quote:a77c522a0d=´m@gnun´]1 - Preciso checar alguns valores no evento OnClose do form. Caso esses valores forem ´x´ devo cancelar o fechamento do form nesse mesmo evento. Dá pra fazer isso?
[/quote:a77c522a0d]
nesse caso podemos usar o Evento OnQueryClose como nosso amigo Adriano mencionou. e para tratar e forma mais simples vamos a um exemplo prático:
no OnCreate mudamos o valor da variável para False, uma vez que o seu form só vai ser usado para recerber determinados dados, certo?
então
agora no Evento OnQueryClose do seu form faça:
Nesse caso para poder fechar o form vc precisa mudá para True no evento que vc faz a checagem dos dados da tela por exemplo:
[quote:a77c522a0d=´m@gnun´]
2 - Deixei o Form como maxmized e tirei o botao maximizar (para o usuario nao restaura-lo) quando clico duas vezes no form ele diminui e não volta mais. Alguem jah deve ter passado por isso, como proceder para que isso nao aconteça.
[/quote:a77c522a0d]
Quanto a isso eu aconselho a não usar a propriedade [b:a77c522a0d]WindowState=WsMaximized[/b:a77c522a0d]
é melhor vc definir qual será o tamanho real do seu form, tipo para trabalhar em telas de 800x600 vc faz assim no OnCreate do form:
espero ter ajudado :wink:
[/quote:a77c522a0d]
nesse caso podemos usar o Evento OnQueryClose como nosso amigo Adriano mencionou. e para tratar e forma mais simples vamos a um exemplo prático:
var Form1 : TForm1; TudoCerto : Boolean;//Crie essa variavel de forma global na unit logo abaixo da variavel Form1 : TForm1
no OnCreate mudamos o valor da variável para False, uma vez que o seu form só vai ser usado para recerber determinados dados, certo?
então
TudoCerto : False;
agora no Evento OnQueryClose do seu form faça:
if Not TudoCerto then ShowMessage(´Valores Incorretos´); CanClose := TudoCerto;
Nesse caso para poder fechar o form vc precisa mudá para True no evento que vc faz a checagem dos dados da tela por exemplo:
var a,b,c:Integer; a := 1; b := 2; c := A + B; if C < 3 then TudoCerto := False; Close;
[quote:a77c522a0d=´m@gnun´]
2 - Deixei o Form como maxmized e tirei o botao maximizar (para o usuario nao restaura-lo) quando clico duas vezes no form ele diminui e não volta mais. Alguem jah deve ter passado por isso, como proceder para que isso nao aconteça.
[/quote:a77c522a0d]
Quanto a isso eu aconselho a não usar a propriedade [b:a77c522a0d]WindowState=WsMaximized[/b:a77c522a0d]
é melhor vc definir qual será o tamanho real do seu form, tipo para trabalhar em telas de 800x600 vc faz assim no OnCreate do form:
(*Ajusta a largura atual da tela do usuário*) //Width := Screen.Width; (*Ajusta a altura atual da tela do usuário*) //Height:= Screen.Height; Width := 780; Height:= 580;
espero ter ajudado :wink:
GOSTEI 0
M@gnun
08/05/2006
obrigado adriano santos e paullsoftware eu testei a dica do onclosequery e realmente o form nao foi fechado.
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...
GOSTEI 0
Adriano Santos
08/05/2006
[quote:795d10ecae=´m@gnun´]obrigado adriano santos e paullsoftware eu testei a dica do onclosequery e realmente o form nao foi fechado.
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...[/quote:795d10ecae]
Retire as áspas [b:795d10ecae]m@gnun[/b:795d10ecae], acho que foi erro de digitação.
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...[/quote:795d10ecae]
Retire as áspas [b:795d10ecae]m@gnun[/b:795d10ecae], acho que foi erro de digitação.
GOSTEI 0
Paullsoftware
08/05/2006
[quote:ef8488d219=´Adriano Santos´][quote:ef8488d219=´m@gnun´]obrigado adriano santos e paullsoftware eu testei a dica do onclosequery e realmente o form nao foi fechado.
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...[/quote:ef8488d219]
Retire as áspas [b:ef8488d219]m@gnun[/b:ef8488d219], acho que foi erro de digitação.[/quote:ef8488d219]
Não, não foi um erro de digitação...
Fazendo dessa forma:
você ajusta o form a largura/altura da tela atual...
Fazendo dessa forma:
você ajusta a uma determinada largura da tela especificada por você, no exemplo mostrei para ajustar a telas configuradas como 800x600, deu pra entender agora?
[quote:ef8488d219=´m@gnun´]porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...[/quote:ef8488d219]
não entendi, porque não pode usar o OnQueryClose do form?
porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...
quanto a segunda pergunta:
paullsoftware quando vc disse
(*Ajusta a largura atual da tela do usuário*)
//Width := Screen.Width;
(*Ajusta a altura atual da tela do usuário*)
//Height:= Screen.Height;
Width := 780;
Height:= 580;
é pra colocar o // antes de
width := Screen... e heigh := Screen...
???
valeu...[/quote:ef8488d219]
Retire as áspas [b:ef8488d219]m@gnun[/b:ef8488d219], acho que foi erro de digitação.[/quote:ef8488d219]
Não, não foi um erro de digitação...
Fazendo dessa forma:
Width := Screen.Width; Height:= Screen.Height;
você ajusta o form a largura/altura da tela atual...
Fazendo dessa forma:
Width := 780; Height:= 580;
você ajusta a uma determinada largura da tela especificada por você, no exemplo mostrei para ajustar a telas configuradas como 800x600, deu pra entender agora?
[quote:ef8488d219=´m@gnun´]porem pro meu caso nao deu certo, pois eu tenho ´sempre´ que entrar no ovento onclose do form, e do jeito q vcs disseram, o evento nao eh disparado. Eu fiz uns testes aqui e vi q se no proprio evento onclose eu passar o parametro Action := caNone o form nao eh fechado e o evento eh disparado. Entao essa alternativa vai ser melhor no meu caso...[/quote:ef8488d219]
não entendi, porque não pode usar o OnQueryClose do form?
GOSTEI 0
Adriano Santos
08/05/2006
Não, não foi um erro de digitação...
Puts, pode crer...Não foi erro de digitação, nem reparei que o código estava em ´duas´ versões, foi malz Paul.
não entendi, porque não pode usar o OnQueryClose do form?
Pode crer, porque não usar todo o algoritimo que você preparou para o onClose no onCloseQuery?
GOSTEI 0
Paullsoftware
08/05/2006
[quote:6906ec6cc4=´Adriano Santos´]
Pode crer, porque não usar todo o algoritimo que você preparou para o onClose no onCloseQuery?[/quote:6906ec6cc4]
vamos esperar que ele tire a nossa dúvida :lol:
Pode crer, porque não usar todo o algoritimo que você preparou para o onClose no onCloseQuery?[/quote:6906ec6cc4]
vamos esperar que ele tire a nossa dúvida :lol:
GOSTEI 0