Академический Документы
Профессиональный Документы
Культура Документы
crearclasesendelphiForosClubDelphi
FTP
CCD
ForosClubDelphi>Principal>Varios
crearclasesendelphi
Registrarse
FAQ
Miembros
Buscar
Trucos
Contrasea
Foros
Calendario
IniciarSesin
Guadeestilo
Herramientas
TemasdeHoy
BuscarenTema
Desplegado
#1
22042006
Registrado:Nov2005
Posts:14
Miembro
Trabajo
alextmb
crearclasesendelphi
holaamigosdeclubdelphi.comnesecitodesuayuda,ojalayalguienpudieraproporcionarmeunejemplode
comocrearunaclaseentiempodeejecucionendelphiyrespondersiPuedocrearclasescomosifueraun
arreglo?.
Necesitocrear20clasessimilares.DeantemanoGracias
#2
22042006
Sinaloense
Miembro
Registrado:Oct2003
Posts:139
Nosepuedencrearclases,loquesehaceesinstanciarobjetos.
#3
22042006
dec
Moderador
Registrado:Dec2004
Ubicacin:Alcobendas,Madrid,Espaa
Posts:12.025
Hola,
Aversinosentendemos.
Unaclaseesunaclase,yunobjetoesunobjeto.Unobjetoeslainstanciadeunaclase.Unaclaseescomoun
moldedeunobjeto.Notienesquecrearveinteclases(creo),sinoquetienesquecrear20objetosdeuna
determinadaclase.
CmoseinstanciaunaclasedeobjetoenDelphi?Cmosecreanobjetosdeunaclase?Mediantelos
constructoresconquecadaclasecuenta,quenosonsinounosmtodos"especiales"queinicializanvariables,
preparanunobjeto,enfin,deunadeterminadaclase.
Sucontraparteestenlos"destructores",queseutilizanparaliberarmemoria,porejemplo,oparacualquier
otratareaquehubieraquellevaracabocuandosedestruyeundeterminadoobjetodeciertaclase.
Perocmocreasunobjeto,demonios?Teestarspreguntando.Nosoyyoelmsindicadoparaestaraqu
ahoraescribiendoesto,sinmodestialodigo,pero,endefinitiva,tendrsquefijarteenelconstructoro
constructores(porquepuedehabermsdeuno)delaclaseencuestin,parasabercmotienesquetratarcon
ello.
http://www.clubdelphi.com/foros/showthread.php?t=30889
1/9
28/10/2015
crearclasesendelphiForosClubDelphi
Unejemplo?Deacuerdo.Creemosunainstanciadelaclase"TEdit",porejemplo,quesabesqueesuncontrol
visualdelosquevienenenlapestaa"Standard"delapaletadecomponentesdeDelphi.
Dndeseencuentradefinidalaclase"TEdit"?Enlaunidad"StdCtrls"(deStandardControls).Puesbien,lo
primeroserarequeriresaunidad,parapodertrabajarconlaclase"TEdit",yasabes:
CdigoDelphi[]
uses
StdCtrls;
Ahoratendremosquebuscarleunhogaralainstanciadelobjetoquequeremoscrear.Digamosqueuna
variabledeltipodeobjetoquequeremoscrearnospuedevenirbien.Asquedeclaremosunavariabledeese
tipoendondesea...bueno,endondeseaquenoshagafalta,porejemplo,supongamosquevamosautilizarun
objeto"TEdit"quecrearemosentiempodeejecucinenunformulario:
CdigoDelphi[]
unitUnit2;
interface
uses
Forms,StdCtrls;
type
TForm2=class(TForm)
private
MiEdit:TEdit;//aquestoy
end;
var
Form2:TForm2;
MiEdit:TEdit;//oaqutambin
implementation
{$R*.dfm}
var
MiEdit:TEdit;//inclusoaqu
end.
Veslavariable"MiEdit"declaradaenlaseccin"private"delaclase"TForm2"?Tambinvescmopudimos
declararlafueradelaclase"TForm2",enlaclusula"interfaz"delaunidadquecontieneelformulario,e
inclusopudimosdeclararlaenlaclusula"implementation".
Igualmentepodramoshaberladeclaradodentrodeunprocedimiento,funcinomtodo.Porejemplo,imagina
quedentrodelaclusula"implementation"delaunidadanteriortuviramosalgoas:
CdigoDelphi[]
procedureTForm2.Button1Click(Sender:TObject);
var
MiEdit:TEdit;
begin
http://www.clubdelphi.com/foros/showthread.php?t=30889
2/9
28/10/2015
crearclasesendelphiForosClubDelphi
end;
Estaramosdeclarandounavariablecapazdecontenerlareferenciadeunobjetodelaclase"TEdit"dentrodel
mtodo"Button1Click",enestecaso.
Muybien.Perocmocreoelobjeto?Vamosaello.Sigamosconlavariablequedeclaramosenelmtodo
susomentado.Ascreamosunainstanciadelaclase"TEdit":
CdigoDelphi[]
procedureTForm2.Button1Click(Sender:TObject);
var
MiEdit:TEdit;
begin
MiEdit:=TEdit.Create(Self);
MiEdit.Parent:=Self;
MiEdit.Free;
end;
Vamosporlneas.Primerohacemosusodelconstructordelaclase"TEdit",elcualnospidecomoparmetro
uncomponente"propietario"paraelobjeto"TEdit"quequeremoscrear.Nosotrosledamoscomopadreel
"Form2",esdecir,comosabes,lavariable"Self"contieneunareferenciaalobjetoencuyomtodoestamos
trabajando,queenestecasoes"Form2".Elpropietariodel"TEdit"seencargardeliberarlamemoriaocupada
conesteensudestruccin,enladelpropietariomismo,aunquenosotrospodemosencargarnosdeesatarea
tambinpornuestracuenta.
Elobjeto,apartirdeah,estyaenmemoria,vivitoycoleando,pero,noleveramossinofueraporla
siguientelnea.Este"TEdit"esmuysuyo,y,comootroscontrolessimilares,ademsdeun"propietario"nos
solicitaun"padre".Escomosinospreguntara,"estbien,aquestoy,pero,dndequieresquememuestre?"
Ynosotroslerespondiramosconlasmismas,enelmismoformulario,ydejayadeserpesadoymustrate
ya!
Yel"TEdit"obedientesemuestra...puesnofaltabams!
Perounainstruccinmsabajo,oh,amigo,lavidaesas,destruimosel"TEdit",liberamossumemoriay
adis,ahtepudras.Porqueyanonoshacafalta,naturalmente.Deotromodopodramosseguirusndolo
hastacuandohubiramosquerido.
Diferenciasentredeclararlavariable"TEdit"enlaclasedelformulario,enlaclusula"interface",enla
clusula"implementation"oenelprocedimiento,comohemoshecho?Bueno.Esoparaotrapregunta,queya
estoyviendoquemeestoyenrollandodemasiadoconesta,ynosyohastadndevamosallegar...
Pero...casisemeolvida!Tquerascrearveinteclases,digoobjetos!Deunatacada!(?)Yentiempode
ejecucin!Vaderetro!Bueno.Puescomocasicontodoenestodelaprogramacin,habrvariasformasde
enfocarlascosas,yenpartetienequeverqupretendemosconseguir.
Siteexplayasunpocomsenloquenecesitas,talvezalguienpuedaofrecertemsinformacin.Yotedira
responderaquepuedescrearunarreglodelos"TEdit"(seguimosconelejemplo),opuedesutilizaruna
variablequecontenga(ovayaconteniendo)los"TEdit"quenecesites...nosqudecirte,porquetampocos
qunecesitasrealmente.
Aqutedejoalgodecdigoescritoavuelapluma,queseguramentecontengaerrores,perotalvezpuedadarte
algunaidea.Seadmitensugerenciasatodashorasdelunesaviernesysbadosyfestivosquenoseande
guardar.
CdigoDelphi[]
http://www.clubdelphi.com/foros/showthread.php?t=30889
3/9
28/10/2015
crearclasesendelphiForosClubDelphi
uses
Contnrs;//ContienelaclaseTObjectList
var
//Unarraypreparadoparacontener20TEdit
FEditsA:array[0..19]ofTEdit;
procedureTForm1.Button1Click(Sender:TObject);
var
i:integer;
begin
Randomize;
fori:=0toHigh(FEditsA)do
begin
FEditsA[i]:=TEdit.Create(Self);
FEditsA[i].Parent:=Self;
FEditsA[i].SetBounds(Random(Self.Width100),
Random(Self.Height20),100,20);
end;
end;
var
FEditsB:TObjectList;
procedureTForm1.Button2Click(Sender:TObject);
var
nEdit:TEdit;
begin
nEdit:=TEdit.Create(Self);
nEdit.Parent:=Self;
Randomize;
nEdit.SetBounds(Random(Self.Width100),
Random(Self.Height20),100,20);
ifnotAssigned(FEditsB)then
FEditsB:=TObjectList.Create;
FEditsB.Add(nEdit);
ShowMessage(Format('EditsenFEditsB:%d',[FEditsB.Count]));
end;
procedureTForm1.FormDestroy(Sender:TObject);
begin
FEditsB.Free;
end;
Nocomentoelcdigoporquecreoquemsomenospodrentenderse,yporqueyamehecansadounpocode
aporrearlasteclas...peropuedescomentarloqueteparezcadelmismo,queaquestaremosencuanto
hayamosdescansadounpoco.
__________________
DavidEsperalta
www.davidesperalta.com
#4
22042006
alextmb
Miembro
Registrado:Nov2005
Posts:14
errordeescritura
perdonesquenomedihaentenderenmiprimermensaje,soynovatoycomoquemeenredounpocoal
explicarme,perosiporainvamiduda,loquenesecitohacerescrearunaclaseyenesaclasetengoque
crear20imageconelcodigoquemehasdadomeexplicamuchascosa,perotambienmeabrealgunasdudas.
http://www.clubdelphi.com/foros/showthread.php?t=30889
4/9
28/10/2015
crearclasesendelphiForosClubDelphi
queesloquehacelalinea?
CdigoDelphi[]
MiEdit.Free;
yqueaqueserefiereutilizandolapalabraself?
porresolvermisdudasyescribirtantogracias.
#5
23042006
dec
Moderador
Registrado:Dec2004
Ubicacin:Alcobendas,Madrid,Espaa
Posts:12.025
Hola,
Cita:
perdonesquenomedihaentenderenmiprimermensaje,soynovatoycomoquemeenredounpoco
alexplicarme,perosiporainvamiduda,loquenesecitohacerescrearunaclaseyenesaclase
tengoquecrear20image(...)
Bueno.Alomejoresquenosotrosnoshemosempeadoenverlodelamaneraenquenoera...Ahoracreo
comprendermsomenosaloqueterefieres.Luegoluegoteexplicarporqudigoquelogrocomprenderlo
msomenos.
Cita:
queesloquehacelalinea?
CdigoDelphi[]
MiEdit.Free;
Bueno,segnlaayudadeDelphi"Free"esunmtododelaclase"TObject"(delaquedesciendentodoslos
objetosenDelphi,directaoindirectamente)quesirvepara:
Cita:
EmpezadoporAyudadeDelphi
Destroysanobjectandfreesitsassociatedmemory,ifnecessary.
Cita:
yqueaqueserefiereutilizandolapalabraself?
Setratadeunidentificadorque"poneDelphi"para...
Cita:
EmpezadoporAyudadeDelphi
Withintheimplementationofamethod,theidentifierSelfreferencestheobjectinwhichthemethodis
called.
http://www.clubdelphi.com/foros/showthread.php?t=30889
5/9
28/10/2015
crearclasesendelphiForosClubDelphi
Ahora,siteparece,vamosalodeporqudecaquecomprendomsomenosloquequieresdecircuando
dicesquequierescrearunaclasequecontenga20"TImage"(supongoqueterefieresaobjetosdelaclase
"TImage"cuandohablasdeimgenes).
Yonosoymuybuenoenlaprogramacinorientadaaobjetos(bueno,enrealidadenningnparadigmade
programacin,pero,noestoyaquahoraparaquejarme).Loquesemeocurreesqueparaloquequieres
hacerhabrmsdeunasolucin,msdeunposiblecaminoqueandar.
Usarstodaslasimgenesdesdeunprincipio?Setrata,porelcontrario,deiraadiendoimgenessegn
seanecesario,peroesposiblequenuncasellegueallmitede20imgenes?Sonpreguntasqueseme
ocurren,porque,tengomisdudassobreloquepretendesconseguir.
Sitehasfijadoenelcdigodearribasemuestraunaformadecrearun"Array"capazdecontenerveinte
"TEdit":lomismopodracontener"TImage",comopuedessuponer.Tambinsemuestraenelcdigodearriba
cmopuedencrearse"TEdit"ysevanaadiendoenunavariabledetipo"TObjectList"(teremitoalaayudade
Delphisobreestaclase).
Bueno.Pueslomismoquesedeclarunavariable"Array"yunavariable"TObjectList"enlasclsulas
"interface","implementation",dentrodelaclase"TForm2"ydentrodeunmtododeestaltimaclase,nadate
impidedeclararvariablesdeesascaractersticasdentrodeladeclaracindetupropiaclase,delaqueests
llevandoacabo.
Nos.Intuyoquetantoatiyamnoshacenfaltaunpardehervoresencuantoaprogramacinorientadaa
objetosserefiere,entreotras,porqueyapuestos,porquno.Yamedirsqusacasenclarodetodoeste
rolloquehesoltado.
__________________
DavidEsperalta
www.davidesperalta.com
#6
23042006
[Lepe]
MiembroPremium
Registrado:May2003
Posts:7.364
Despuesdelaextensa,eXtupendayamenaexplicacindeDec,solomequedaaadirqueYousaraun
TObjectListporcomodidad(notienesqueestablecerloslmitesnimodificarlosalaadirobjetos,sehacesolo,
ademspermiteordenarlosobjetosysobretododestruirlosdeunaformamuyfaciltodosdeunasolatacadao
biendestruirunosolo)ytambienporquequedauncdigomslimpio.
TambienteremitoalaBsquedadelosforosendondesehahabladomuchosobrelosTObjectList.
CdigoDelphi[]
varL:TobjectList;
i:Integer;
begin
L:=TobjectList.Create(true);//aldestruirlalistasedestruyentodos
fori:=0to2000do
begin
L.Add(Tedit.Create(Self);//locreoyloaadoalalista
Tedit(L.items[i]).Parent:=self;accedoalobjetoatravsdelalista.Sinusarvariables
end;
Sleep(3000);
Freeandnil(L);//liberolalistaytodoslosEditsdeunatacada.
end;
Saludos
__________________
Siustedentendimicomentario,contctemeygustosamente,
selovolveraexplicarhastaquenoloentienda,Gracias.
http://www.clubdelphi.com/foros/showthread.php?t=30889
6/9
28/10/2015
crearclasesendelphiForosClubDelphi
#7
24042006
Alcolea
Miembro
Registrado:Apr2006
Ubicacin:SantiagodeCuba,Cuba
Posts:100
LasclasesylosobjetosenDelphi
Holaaatodos:
Meentusiasmaeltemayvoyametermicuchareta.Terecomiendoencarecidamentequeleas"LaCaraoculta
deDelphi4"apartirdelapgina127dondecomienzaaexplicartodolorelacionadoconlaPOO,osea,la
creacindeclases,lasrelacionesqueexistenentreunasyotrasatravsdelaherenciaytodounconjuntode
cuestionesqueesprecisodominarparaenredarseconeltemademaneraapropiada.
Comoyaalguienteexpliclasclaseslaspudierasvercomo"moldes"quedefinenelcomportamientodetodos
losobjetosqueseinstansiendeella,puedesveratodoslosbotonesdetuaplicacincomo"variables"
pertenecientesaltipoTButton.
Unejemplosencillo:
Unaclaseparamanejarempleados(estolovienunlibroylomodifiqu,noestcompletoperoteayudar)
TEmpleado=Class
private
Nombre:String
Cargo:String
FechaIng:Date
Salario:Real
{Enlaseccinprivatehedeclaradolosatributosdelaclase,algoascomolaspropiedadesquecaracterizaran
acadaempleado,sipiensashacerunaclaseparamanejargrficosquizsdebasdeclararcomounodelos
atributosdeestaunobjetoCanvas.Todoloquesedeclareenlaseccinprivatenopodrseraccedidodesde
otraUnit,anoseratravsdealgnmtododelaclasedestinadoalefecto}
public
constructorCreaEmpleado(ANombre,ACargo:StringAFechaIng:DateSalario:Real)
{Elconstructor,comoteexplicaronesun"mtodoespecial"quehaceloqueyatedijeron,yquepuedehaber
variosdentrodeunaclaseyaqueunobjetopuedecrearsedevariasformas,digamosquepuedescargarlo
desdelosdatosguardadoseneldiscoduroocrearlodesdeceroentiempodeejecucin,opuedesno
implementarunconstructorsinoesnecesarioyaquetodaslasclasestieneunopredefinidollamadocreateel
cualinicializatodoslosvalores,delaclasequeseaqueestscreando,desdecero,esdecir,siesunvalor
lgicocomienzacomofalsesiesentero,encerounaenumeracin,porelprimervalordelaenumeracin
unastring,conlacadenavacaetc.}
procedureSetNombre(ANombre:String)
procedureSetNombre(ACargo:String)
procedureEliminarEmpleado
procedureCalcularAumento
end
{Ademsdelconstructortendrsquedeclararlosmtodosdetuclase,yestounadelascosasquemarcala
diferenciaentreunregistroyunobjeto,losobjetosllevanencapsuladosdentrodesilasfuncionesquehacen,
quierodecirquedondequieraquelollameslepuedesaplicaralempleadoqueseaelmtodoparacalcularel
aumentodelamismamaneraquealobjetoEdit1leaplicaselmtodoClearparaborrareltexto(Edit1.Clear)(
Empleado1.CalcularAumento),nosabemosquelneasdecdigotieneelmtodoClearperofunciona,despus
quehagastuclasenoteacordarsquefueloquepusisteacadamtodoperosilahicistebiennoteharfalta
recordarlo,sololamaselmtodoyyaest}
implementation
http://www.clubdelphi.com/foros/showthread.php?t=30889
7/9
28/10/2015
crearclasesendelphiForosClubDelphi
{Acenlaimplementacinesdondeseponeacadamtododeclaradoelcdigoejecutablequetendr.
Observaquedelantedelnombredecadamtodoseponeelnombredelaclasealaquepertenece,puessi
implementasmasdeunaclaseenlaUnitnoindicaraqueclaseperteneceelmtodopuedetraerproblemas
porloqueestoesobligatorio}
procedureTEmpleado.SetNombre(ANombre:String)
begin
Nombre:=ANombre
end
procedureTEmpleado.SetNombre(ACargo:String)
begin
Cargo:=ACargo
end
////////////////////////////////////////////////////////////////////
Cmoutilizarlaclase?...delamismamaneraqueutilizaslasclasesqueyaexisten,declararlosobjetos
instanciasdelaclasedelasvariadasmanerasqueyateexplicaronynoolvidarllamaraalgunodelos
constructoresposiblesparadarlevidaalosobjetos,solodespusdecreadospodrsaplicaralgunosdelos
mtodos.
Esperoquetepuedaservirdealgomiexplicacin
Micorreoruben06175@scu.jovenclub.cu
TemaAnterior|PrximoTema
NormasdePublicacin
noPuedescrearnuevostemas
noPuedesresponderatemas
noPuedesadjuntararchivos
noPuedeseditartusmensajes
ElcdigovB esthabilitado
Lascaritasestnhabilitado
Cdigo[IMG]esthabilitado
CdigoHTMLestdeshabilitado
SaltaraForo
Varios
Ir
TemasSimilares
Tema
Autor
Foro
Clasesderivadas
kolotoure
Varios
ClaseseInterfaces
Virata
OOP
Clasesdetransacciones.
mlara
ClasesForms
ClasesdeOrgasmo
Respuestas
ltimomensaje
0112200422:43:31
14
0709200411:10:15
FirebirdeInterbase
1607200301:50:31
lafirma
OOP
0107200320:48:12
OmarAlejandro
Humor
0505200321:52:12
LafranjahorariaesGMT+2.Ahorasonlas02:42:48.
Espaol3.6.7
http://www.clubdelphi.com/foros/showthread.php?t=30889
ContactarconNosotrosClubDelphiArchivoTop
8/9
28/10/2015
crearclasesendelphiForosClubDelphi
PoweredbyvBulletinVersion3.6.8
Copyright20002015,JelsoftEnterprisesLtd.
TraduccinalcastellanoporelequipodemoderadoresdelClubDelphi
Inicio|Contacto|Foros|Noticias|Trabajo
Copyright19962007ClubDelphi
http://www.clubdelphi.com/foros/showthread.php?t=30889
9/9