2011-10-20 7 views
5

Considerate questo modulo, con un'etichetta 'Observer qui' e un pulsante 'click':Perché i comandi sono nella posizione sbagliata se sono posizionati mentre il modulo scorre?

a label near the left edge of the form, with a button

Su clic del pulsante Io sono la creazione della griffe Left a 10 (Label1.Left :=10;)

io sono sempre correttamente come nella seconda immagine:

form with label near left edge

Poi, ho scorrere il modulo a destra:

same form as before, but scrolled right so label is hidden

Ora, dopo aver fatto clic sul pulsante ottengo un problema, che è mostrato quarta immagine in:

same form, scrolled left, but label visible near middle instead of left

del marchio Left non è più 10. Sono più di 10, ma ho bisogno che sia 10. Come posso farlo?

risposta

6

Label1.Left: = 10; Mezzi 10 rimasti dal bordo corrente corrente (form1.left).

quindi Label1.Left: = 10; non produrrà lo stesso risultato sempre, dipende Form1.HorzScrollBar.Position ;

Devi codice come

Label1.Left := 10 - Form1.HorzScrollBar.Position ; 

si può vedere questo modello su tempi di progettazione selezionare un componente nel form1 e regolare la barra di scorrimento, è può notare che in Inspector valore della componente selezionato sinistra cambierà anche quando si sposta la barra di scorrimento

si può capire come questo

Se hai HorzScrollBar, se aggiungi componenti e imposta il loro valore di sinistra molto alto, la form1 non aumenterà la sua larghezza ma la sua larghezza virtuale gestita dalla barra di scorrimento aumenterà, tutti i valori di coordinazione daranno il valore relativo a form1 non correlato a lo spazio virtuale

+0

riferiscono http://books.google.lk/books?id=V9t0lA-BPUAC&pg=PA349&lpg=PA349&dq=HorzScrollBar.Position+and+left+in+delphi&source=bl&ots=4-VEnO6j9k&sig=mmaYp0uooE-QveNIjUhk5eZoyyU&hl = it & ei = nBegTpT8D4f3rQebkv2JAw & sa = X & oi = book_result & ct = result & resnum = 1 & ved = 0CBwQ6AEwAA # v = onepage & q & f = false – VibeeshanRC

+0

Qualcuno può dirmi se lo stesso pattern è usato nelle winform di Visual Studio. – VibeeshanRC

+0

@rakesh se pensi che questa sia la risposta che volevi, puoi accettarla come soluzione o puoi dare un feedback – VibeeshanRC

Problemi correlati