n° 219
Novembre 2017
Gennaio 16, 2018, 03:22:02 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: SetWindowPos  (Letto 4240 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
bibopp
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo
« inserita:: Ottobre 28, 2003, 10:40:43 »

Buongiorno a tutti,

qualcuno ha mai avuto necessità di visualizzare un form
partendo dal suo handle?

Il problema è questo: una volta creato un generico form voglio visualizzarlo con coordinate che decido io (generalmente al centro dello schermo, ma non sempre).
L\'obiettivo è realizzare una funzione che a partire dall\'handle del form (attenzione la funzione non deve riceve il puntatore all\'oggetto form) lo visualizzi.
Ho già realizzato il tutto ma purtroppo non funziona.
Il corpo della funzione è:

-chiamata a GetWindowRect per ottenere le dimensioni del form,
-chiamata a SetWindowPos per impostare le coordinate;

La chiamata a SetWindowPos è: SetWindowPos(Handle, 0, x, y, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_SHOWWINDOW), risultato: la form è visualizzata dove deve ma non compaiono i controlli che io ci ho messo sopra, nessuna TEdit, nessun TButton ecc., form completamente vuota.

Secondo voi perchè?

Uso delphi 6 enterprise.

Grazie.
Saluti a tutti.
Registrato
Salvatore Meschini
Non sempre ciò che viene dopo è progresso
Global Moderator
Hero Member
*****

Karma: +35/-12
Scollegato Scollegato

Messaggi: 3431


42°01.408' NORD - 13°25.315' EST


Mostra profilo WWW
« Risposta #1 inserita:: Ottobre 28, 2003, 06:55:35 »

Non conviene utilizzare le proprieta\' TOP e LEFT dell\'oggetto TFORM per posizionare la finestra?

Il problema dovrebbe essere nel passaggio dei flag, vedi se sono quelli corretti e prova a sostituire il simbolo + con OR.
Registrato

Salvatore Meschini

I moderatori invitano tutti gli utenti a rispettare il REGOLAMENTO.
bibopp
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo
« Risposta #2 inserita:: Ottobre 30, 2003, 04:26:45 »

L\'obiettivo della funzione è quello di non aver necessità di operare sull\'oggetto TForm, non deve ricevere come parametro il puntatore all\'oggetto ma solo l\'handle.

Ho guardato nella vcl, il pas forms.pas utilizza l\'api in moltissime situazioni, a volte i flag vengono passati con il +, altre volte con l\'or e altre ancora con l\'and.

Io ho provato in tutti i modi ma non fuziona.

Inoltre ho notato che la form visualizzata in questo modo si
rifiuta anche di chiudersi cliccando sulla X del system menu.
Ma l\'evento onclose viene scatenato.

Sicuramente mi manca qualche passaggio.

Qualcuno ha qualche idea?
Registrato
savoweb
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 34

0
Mostra profilo
« Risposta #3 inserita:: Novembre 07, 2003, 03:14:06 »

Il cosiglio che ti posso dare sono:
1 Visualizzare la form con l\'API ShowWindow
2 Fatto cio prova a chiamare un comando simile:
 SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE OR SWP_NOREPOSITION OR SWP_NOSIZE   OR SWP_NOSENDCHANGING);

Questo codice lo usava un mio collega.

Comunque come già detto ti conviene usare Top e Left ma fai tu.

Ciao
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines