Empecé a aprender Delphi hace dos días pero me quedé atascado. Me derrumbé porque nada va en mi dirección, así que decidí escribir aquí. Quería crear una clase que tuviera un campo con su propio objeto TTimer y que realizara alguna acción en algún intervalo de tiempo. ¿Es posible? Supongamos que tenemos dicho código:¿Puede el objeto TTimer ser un campo de una clase Delphi?
Sth = class
private
public
clock:TTimer;
procedure clockTimer(Sender: TObject);
constructor Create();
end;
constructor Sth.Create()
begin
clock.interval:=1000;
clock.OnTimer := clockTimer;
end;
procedure Sth.clockTimer(Sender: TObject);
begin
//some action on this Sth object at clock.interval time...
end;
Mi código similar copia pero no funciona correctamente. Cuando llamo al constructor, el programa falla (violación de acceso en la línea: clock.interval: = 1000;). No sé qué
Sender:TObject
pero creo que ese no es el problema. ¿Es posible crear esa clase que quiero?
Los TTimers son con mucha frecuencia campos de clases Delphi. Las clases de formulario son clases, y cada vez que coloca un TTimer en un formulario, el IDE declara un campo TTimer para usted. –
Sé que IDE declara campo TTimer para mí cuando lo pongo en un formulario. Pero quería poner TTimer como un campo de clase que no tiene forma. Quería escribir una clase separada (archivo * .pas) sin un formulario y vincularlo al formulario principal. Entonces, sin forma, tuve que escribir todas las declaraciones por mi cuenta. No sé si es un buen enfoque (no usar formulario con clases secundarias), ni siquiera sé de formas todavía. Pero ahora todo funciona bien después de la respuesta de David Heffernan. – xan
Este problema básico (no sabías que tienes que crear objetos antes de usarlo) me indica que podrías beneficiarte leyendo material básico, como los primeros capítulos de uno de los grandes libros viejos de Delphi, como el Marco cantu. uno (dominio de Delphi 7 o algo así), o al menos, pasar más tiempo en http://www.delphibasics.co.uk/ –