Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Principal";
Archivo actual: 2002.01.10;
Descargar: [xml.tar.bz2];

abajo

Problema con ventanas MDIChild Encontrar ramas similares


dimonf   (2001-12-20 20:46) [0]

Estoy tratando de dibujar en Canvas, parece estar bien, pero por alguna razón
cuando se abre una nueva ventana MDI, el lienzo desaparece en la ventana anterior, y cuando cambia la ventana 1, cambia el lienzo de la ventana 2.
Dime cual es el problema
Aquí está mi código:
tipo
TPreview = clase (TPanel)
privada
Lienzo de propiedad;
protegido
procedimiento de pintura; anular
público
constructor Crear (AOwner: TComponent); anular
fin;

tipo
TMyChild = clase (TForm)
fsChild: TfsManager;
ScrollBox1: TScrollBox;
procedimiento FormClose (Sender: TObject; var Action: TCloseAction);
procedimiento FormCreate (Sender: TObject);
procedimiento FormResize (Sender: TObject);
privada
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;

procedimiento Draw (Valor: entero); adelante

var MyPrev: TPreview;
MyChild: TMyChild;

implementación

{$ R * .DFM}

utiliza Unit1;

procedimiento TMyChild.FormClose (Remitente: TObject; var Acción: TCloseAction);
comenzar
Acción: = caFree;
fin;

procedimiento TMyChild.FormCreate (remitente: TObject);
comenzar
rev.tag: = Main.MyCount;
MyPrev: = TPreview.Create (Self);
MyPrev.Width: = 460;
MyPrev.Height: = 500;
fin;

{TPreview}

constructor TPreview.Create (AOwner: TComponent);
comenzar
Creación heredada (AOwner);
Padre: = AOwner como TWinControl;
BevelInner: = bvNone;
BevelOuter: = bvNone;
Color: = clWhite;
BorderStyle: = bsNone;
fin;

procedimiento TPreview.Paint;
comenzar
Empate (1);
fin;

procedimiento Draw (Valor: entero);
var R: TRect;
comenzar
valor del caso de
1:
comenzar
con MyPrev comience
Canvas.Pen.Width: = 1;
Canvas.Brush.Style: = bsSolid;
Canvas.Font.Color: = clBlack;
Canvas.Font.Size: = 10;
Canvas.Font.Style: = [fsBold];
Canvas.TextOut (0,30, "



dimonf   (2001-12-20 22:17) [1]

¿Sin pensamientos? Y luego ya desgastado: ((((



PVR   (2001-12-21 00:17) [2]

Intente agregar el código a ONDeactovate, ONActivate, aunque no intentaré irme, lo siento ...



Ю Ю   (2001-12-21 11:30) [3]

var MyPrev: uno para toda la Unidad
MyPrev: = TPreview.Create (Self) - y contiene una indicación de la última creación
procedimiento Draw (Valor: entero) solo funciona con él
¿Por qué no dibujar texto de Draw directamente al método de clase TPreview.Paint?



gek   (2001-12-21 12:36) [4]

Sí, estoy de acuerdo con Yu. Yu necesita transferir el código para pintar, entonces todo estará bien



dimonf   (2001-12-21 12:59) [5]

Los chicos no lo entienden, como Yu Yu aconseja: ((((



Alx2   (2001-12-21 13:19) [6]

Creo que el anuncio
MyPrev: TPreview;
Debe estar en la descripción de TMyChild y no ser global.



Alx2   (2001-12-21 13:21) [7]

En consecuencia, el método Draw también estaría en TMyChild.



Alx2   (2001-12-21 13:24) [8]

O no? Mejor método de dibujo en TPreview. Pero entonces, obviamente, no use el nombre MyPrev



dimonf   (2001-12-21 15:21) [9]

Todavía no funciona: ((((
Todo queda como estaba. El efecto es el mismo.
Entonces rehice como escribió Alx2.

tipo

TPreview = clase (TPanel)
privada
Lienzo de propiedad;
protegido
procedimiento de pintura; anular
procedimiento Draw (Valor: entero);
público
constructor Crear (AOwner: TComponent); anular
fin;

TMyChild = clase (TForm)
fsChild: TfsManager;
ScrollBox1: TScrollBox;
procedimiento FormClose (Sender: TObject; var Action: TCloseAction);
procedimiento FormCreate (Sender: TObject);
procedimiento FormResize (Sender: TObject);
privada
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;

var MyPrev: TPreview;

implementación

{$ R * .DFM}

Quizás donde está el error o mis manos están torcidas. :)



Alx2   (2001-12-21 15:35) [10]

Tíralo:

var MyPrev : TPreview;


Escribir

TMyChild = class(TForm)
fsChild: TfsManager;
ScrollBox1: TScrollBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MyPrev : TPreview;
end;


Bueno, corrija la inicialización de myPrev en formCreate (¿o dónde está?) Para que todo sea correcto.



Alx2   (2001-12-21 15:39) [11]

Lo sentimos, a juzgar por el código, la inicialización de MyPrev está bien.
Pero MyPrev debe ser eliminado con FormDestroy, por ejemplo.



Ю Ю   (2001-12-22 07:47) [12]

> Los chicos no funcionan, como Yu Yu aconseja: ((((
Aconsejé lo siguiente (y funciona) :-)

// crea un formulario hijo en el main
procedimiento TForm1.New1Click (remitente: TObject);
var MyChild: TMyChild;
comenzar
MyChild: = TMyChild.Create (self);
MyChild.DrawType: = MDIChildCount mod 2;
// DrawType es un caso especial de algunas propiedades públicas TMyChild;
MyChild.Show;
fin;

tipo
TPreview = clase (TPanel)
protegido
procedimiento de pintura; anular
público
constructor Crear (AOwner: TComponent); anular
fin;

TMyChild = clase (TForm)
procedimiento FormClose (Sender: TObject; var Action: TCloseAction);
procedimiento FormCreate (Sender: TObject);
procedimiento FormResize (Sender: TObject);
privada
{Declaraciones privadas}
MyPrev: TPreview;
FDrawType: entero;
procedimiento SetDeawType (valor constante: entero);
público
{Declaraciones públicas}
Propiedad DrawType: entero leer FDrawType escribir SetDeawType;
fin;

procedimiento TMyChild.FormClose (Remitente: TObject; var Acción: TCloseAction);
comenzar
Acción: = caFree;
fin;
procedimiento TMyChild.FormCreate (remitente: TObject);
comenzar
MyPrev: = TPreview.Create (Self);
MyPrev.Width: = 460;
MyPrev.Height: = 500;
fin;
constructor TPreview.Create (AOwner: TComponent);
comenzar
Creación heredada (AOwner);
Padre: = AOwner como TWinControl;
BevelInner: = bvNone;
BevelOuter: = bvNone;
Color: = clWhite;
BorderStyle: = bsNone;
fin;
procedimiento TPreview.Paint;
var R: TRect;
comenzar
// Tu Draw no es necesario en absoluto. Si necesita dibujar de diferentes maneras,
// es mejor ingresar y cambiar una propiedad, aquí está DrawType

Caso TMyChild (Propietario) .DrawType
de 1: comenzar
Canvas.Pen.Width: = 1;
Canvas.Brush.Style: = bsSolid;
Canvas.Font.Color: = clBlack;
Canvas.Font.Size: = 10;
Canvas.Font.Style: = [fsBold];
Canvas.TextOut (0,30, "Oaeouea cia? Aiey ia iiiaio niyoey aaiiuo n oaiein? Ao? Eea");
R: = Rect (40, 80, 250, 107);
Canvas.Rectangle (R.Left-2, R.Top-2, R.Right + 2, R.Bottom + 2);
R: = Rect (40, 85, 250, 196);
DrawText (Canvas.Handle, PChar ("¿Yia? Aey Aeae:"), -1, R, dt_WordBreak o dt_Center);
R: = Rect (250, 80, 420, 107);
Canvas.Rectangle (R.Left-2, R.Top-2, R.Right + 2, R.Bottom + 2);
R: = Rect (250, 85, 420, 196);
DrawText (Canvas.Handle, PChar ("603.48"), -1, R, dt_WordBreak o dt_Center);
fin;
más comenzar

fin;
fin;
fin;

procedimiento TMyChild.FormResize (remitente: TObject);
comenzar
MyPrev.Left: = (Width-MyPrev.Width) div 2-15;
fin;

procedimiento TMyChild.SetDrawType (const Valor: entero);
comenzar
si FDrawType = Value entonces Exit;
FDrawType: = Valor;
Repintar
fin;





Páginas: 1 rama entera

Foro: "Principal";
Archivo actual: 2002.01.10;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.59 MB
Tiempo: 0.017 c
1-28491
MK
2001-12-21 21:28
2002.01.10
Cómo mover una imagen en TImage con el ratón


3-28420
Ross
2001-12-08 21:58
2002.01.10
Problema de fuente


3-28424
Adúltera
2001-12-08 23:53
2002.01.10
¿Falla en la aplicación DCom o falla de Delphi?


6-28527
PVK
2001-10-16 17:38
2002.01.10
Problema con obtener el nombre de host por su dirección


1-28492
Delphimun
2001-12-21 14:24
2002.01.10
¿Cómo cambiar una letra unas letras hacia adelante (alfabéticamente)?





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español