Newsgroup: it.comp.lang.delphi
Titolo: PaintBox con Shape

salve a tutti
voglio creare un controllo grafico derivato da TPaintbox
cioe' un PaintBox contenete un TShape;
purtroppo non riesco a impostare il parent della TShape.
Ecco il costruttore e il messaggio di errore:
constructor TPaintBox.Create(Owner: TComponent);
begin
   inherited;
   Shape1:=TShape.Create(Owner);
   Shape1.Parent:=Self;  <--***Incompatible types: 'TWinControl' and 
'TPaintBox'***
end;
vuol dire che non e' possibile creare un tale componente?

>   Shape1.Parent:=Self;  <--***Incompatible types: 'TWinControl' and 
2 domande
1) hai letto BENE nella guida da CHI ereditano TShape e TPaintBox?
2) hai letto BENE nella guida la differenza tra OWNER e PARENT?
A.

 2) hai letto BENE nella guida la differenza tra OWNER e PARENT?
ho letto, Parent DEVE essere un TWinControl e TPaintBox non lo e',
quindi non potro' mai avere una PaintBox con uno Shape. Giusto?
Peccato, visto che lo scopo era quello di disegnare e scrivere testi sul
Canvas della PaintBox e far apparire lo Shape intorno ai testi
quando il mouse ci passa sopra...

 quindi non potro' mai avere una PaintBox con uno Shape. Giusto?
NI....
A.

 
Come giochetto non e' molto divertente, anche
perche' prima di fare questa domanda ho cercato di documentarmi
sia sulla guida in linea che su vari libri (Cantu' e Pacheco).
Inoltre l'argomento non e' dei piu' semplici e, oserei dire,
di quelli meglio spiegati sui testi di cui sopra.
Staro' cmq al gioco:
forse devo piazzate il PaintBox su un Panel o meglio su uno ScrollBox?

 forse devo piazzate il PaintBox su un Panel o meglio su uno ScrollBox?
per avere risposte giuste occorre fare (e farSI..) le domande giuste..
Invece di partire dalla SOLUZIONE parti dal PROBLEMA...
Tu cosa devi realizzare, grosso modo?
A.

 Tu cosa devi realizzare, grosso modo?
Voglio disegnare oggetti (nella fattispecie elementi architettonici,
tipo porte, finestre, elementi strutturali tipo travi e plinti)
con le relative misure; per semplificare immagina un rettangolo con
le misure di base e altezza; quando l'utente sposta il mouse su una 
misura e clicca appare una form modale che gli permette di modificare la 
misura; per dare il feedback che la misura e' cliccabile, per ora 
trasformo il puntatore in una manina; mi piacerebbe aumentare la 
sensazione visiva del feedback facendo in modo che contemporanamente il 
testo venisse circondato da uno shape tipo roundrect.
Tieni conto che ho gia' implementato
il riconoscimento della posizione del mouse e per ciascun testo
ho gia' memorizzato le coordinate del testo e del rettangolo che lo 
contiene.
Volevo evitare l'utilizzo di metodi grafici sia perche' mi sembrava piu' 
semplice l'utilizzo di un controllo tipo TShape, sia perche' volevo 
imparare di piu' sulla creazione di controlli composti; cosa che 
pensavo-speravo fosse piu' semplice :-(
Mi sono comprato tutti i libri di Cantu' e Pacheco Teixeira su D4 ma, 
permettimi lo sfogo, trovo che per alcuni argomenti (tipo questo) la 
trattazione
non sia esauriente e spesso, specialmente per Cantu', si perda in casi 
particolari perdendo di vista il concetto generale.
ciao!
Luca

 particolari perdendo di vista il concetto generale.
anche a rischio lapidazione, ribadisco che a me i libri di cantu non
piaccono molto.
A.

 con le relative misure; [...]
In quel caso, combinare dei *TShape* con una *TPaintBox* rende tutto più 
difficoltoso.
Semplicemente, crea un tuo controllo grafico personalizzato in cui 
provvederai tu ad effettuare i disegni a seconda delle azioni 
dell'utente, che provvederai a memorizzare in un'apposita struttura 
dedicata.
Come ha suggerito già Alberto, procurati dei componenti di terze parti 
che forniscano già qualche servizio necessario, alleggerendo lo sforzo.
Io ho usato con estrema soddisfazione il package *Graphics32* 
(
http://www.graphics32.org/
), ereditando la classe base da cui hanno 
origine i controlli visuali presenti nel package e lavorando con 
funzioni performanti in grado di alleviare già dolori conosciuti, come 
il problema del "flickering", le performance di disegno, il supporto al 
canale alfa e così via...
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

> Io ho usato con estrema soddisfazione il package *Graphics32* 
ho confuso glscene con graphic32... I'm sorry.. :-((
A.

 
seguiro' il consiglio.
grazie a Marco e ad Alberto
e pienamente d'accordo su Cantu' (purtroppo non c'e' scelta...)
ciao
Luca

 (purtroppo non c'e' scelta...)
NI.
imho, se riesci a scremare come si deve sui ng trovi molte info utili,
frutto di le cose le HA PROVATE e di chi sulle cose CI HA TOZZATO.
Putroppo scremare è un po difficile...la monnezza è tanta.
A.