Toon posts:

[Delphi] Standaard instellingen (forms, buttons, enz)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het probleem:
Er moet een applicatie in delphi 5 geschreven worden, en daar moet de gebruiker de kleuren, fonts en dat soort dingen kunnen wijzigen.

Nu kan je dit natuurlijk simpel (...) doen, bij elk form alles een kleur, enz geven, maar dat is natuurlijk absoluut niet netjes en ook nog eens erg foutgevoelig.

Is het niet mogelijk bij het starten van de applicatie de standaard instellingen van TObject (?) te wijzigen?

Ik heb gezocht in de help, maar daar vond ik alleen dingen over nieuwe componenten en google kom me ook niet verder helpen.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Componenten hebben standaard properties, en die kun je runtime gewoon instellen. bv btnClick.Font := blabla. Niet zo moeilijk lijkt me.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Don Facundo schreef op 14 december 2002 @ 11:53:
Componenten hebben standaard properties, en die kun je runtime gewoon instellen. bv btnClick.Font := blabla. Niet zo moeilijk lijkt me.
Ik probeerde dus duidelijk te maken dat ik dat juist niet wilde.

Verwijderd

Je wil dus dat de gebruiker de kleuren wel kan wijzigen, maar niet op een handige manier in je programma. Zo dat ik nog eens onhandig. :D Over die overzichtelijkheid: je kunt toch gewoon een button maken en als je daar op klikt, dan laat je een leuk venstertje komen waar je al je properties kan instellen. Volgens mij staat er dan geen enkele code van je echte programma bij dat onderdeel. :O

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

?? Wat wil je dan? Dat die settings zich zelf instellen, dat zul je toch echt moeten implementeren

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Ik geloof dat mijn probleem niet helemaal overkomt.

De gebruiker krijgt de mogelijkheid om het font, de fontcolor, background van de forms, enz te wijzigen.
Die wijziging gelden dus over het hele programma.

Dan kan je uiteraard bij elk form aan elk buttontje, labeltje enzo een kleur, een font enzo toewijzen.
Alleen dat is veel werk, wat volgens mij niet nodig is, en geheid dat je er een paar vergeet.

Nu wil ik dus graag op een of andere manier op het moment dat het programma start in een keer ALLES wijzigen door de property's van TObject (?) te wijzigen, zodat alles direct gewijzigd wordt.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Maak een overerving van je componenten waar je zo'n mechanisme zelf inbouwd

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
LordLarry schreef op 14 December 2002 @ 12:07:
Maak een overerving van je componenten waar je zo'n mechanisme zelf inbouwd
Uiteraard, als je het object pakt waar alle grafische objecten onder hangen, en je weet daar de instellingen van te wijzigen ben je klaar.

Maar hoe?

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Bij mijn weten kun je het niet voor het hele programma in 1 keer regelen. Je kunt het wel per form simpel regel door de property ParentColor en ParentFont op true te zetten voor componenten die op het form liggen. Deze componenten nemen dan de kleur en het font van het form aan. Overigens wil je dit natuurlijk niet voor alle componenten. Een ListBox die de kleur van het form aanneemt is niet echt mooi.

Het enige dat je dan nog hoeft te doen is op de formcreate het form de juiste color en font te geven. Je moet dus per form nog wel een klein stukje code uitvoeren.

Een betere oplossing zou dan natuurlijk zijn dat je een afgeleide van TForm maakt waarin je dat dan doet.

Overigens is TControl de base class waar color en font in zijn gedefinieerd (en dus niet TObject).

[ Voor 17% gewijzigd door klinz op 14-12-2002 12:41 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 00:25

Tomatoman

Fulltime prutser

Als je een beetje budget hebt (ongeveer EUR 150), kun je ExpressLayoutControl van Developer Express kopen. Dat is een kant en klaar product dat precies doet wat jij wilt. Bedenk daarbij dat een dagje zelf iets programmeren heel wat meer kost dan 150 euro, dus zo duur is dat niet. (Dit argument doet het goed bij heel veel bazen :*).)

Als je zelf wat wilt bouwen, zie ik vier wegen.
  1. In de OnCreate van ieder form itereer je door alle componenten (met Components[] en ComponentCount) en controleer je de klasse van de componenten. Als het bijvoorbeeld een button is, stel je alle standaardinstellingen voor je button in. Dit is het gemakkelijkst te realiseren en ook het foutgevoeligste.
  2. Je overerft alle controls die je wilt veranderen en stelt default wat andere instellingen voor ze in. Voortaan zet je geen TButton meer op je form, maar een TMijnButton. Dit is wat meer werk, zal prima functioneren, maar is voor jou als ontwikkelaar niet bijzonder praktisch als je al een heel eind op weg bent.
  3. Je maakt een stijlcomponent met eigenschappen zoals kleur, randstijl en font. In de OnCreate van je applicatie itereer je weer door alle componenten, maar de instellingen voor dingen zoals buttons haal je uit je stijlcomponent. Zodra je iets aan je stijlcomponent verandert (bijvoorbeeld de randkleur), ga je weer alle componenten op je form langs en update je de weergave, zodat alle controls de juiste randkleur gebruiken. Dit is heel flexibel en lijkt op de oplossing van ExpressLayoutControl voor standaardcomponenten zoals TButton.
  4. Je bouwt een stijlcomponent en een stelletje controls die een property Style of iets dergelijks hebben. Ze verkrijgen hun weergave-instellingen via de Style property (waar je natuurlijk je stijlcomponent moet selecteren). Ook hier moet je TButtons en dergelijke weer zelf overerven. Dit is de meest bewerkelijke, maar ook de meest flexibele manier. Het is tevens de oplossing van ExpressLayoutControl voor speciale controls van Developer Express.
Na al dit typwerk hoop ik dat dit wél een goed antwoord is op je vraag :)

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
tomatoman schreef op 14 december 2002 @ 12:58:
Als je een beetje budget hebt (ongeveer EUR 150), kun je ExpressLayoutControl van Developer Express kopen. Dat is een kant en klaar product dat precies doet wat jij wilt. Bedenk daarbij dat een dagje zelf iets programmeren heel wat meer kost dan 150 euro, dus zo duur is dat niet. (Dit argument doet het goed bij heel veel bazen :*).)

Als je zelf wat wilt bouwen, zie ik vier wegen.
  1. In de OnCreate van ieder form itereer je door alle componenten (met Components[] en ComponentCount) en controleer je de klasse van de componenten. Als het bijvoorbeeld een button is, stel je alle standaardinstellingen voor je button in. Dit is het gemakkelijkst te realiseren en ook het foutgevoeligste.
  2. Je overerft alle controls die je wilt veranderen en stelt default wat andere instellingen voor ze in. Voortaan zet je geen TButton meer op je form, maar een TMijnButton. Dit is wat meer werk, zal prima functioneren, maar is voor jou als ontwikkelaar niet bijzonder praktisch als je al een heel eind op weg bent.
  3. Je maakt een stijlcomponent met eigenschappen zoals kleur, randstijl en font. In de OnCreate van je applicatie itereer je weer door alle componenten, maar de instellingen voor dingen zoals buttons haal je uit je stijlcomponent. Zodra je iets aan je stijlcomponent verandert (bijvoorbeeld de randkleur), ga je weer alle componenten op je form langs en update je de weergave, zodat alle controls de juiste randkleur gebruiken. Dit is heel flexibel en lijkt op de oplossing van ExpressLayoutControl voor standaardcomponenten zoals TButton.
  4. Je bouwt een stijlcomponent en een stelletje controls die een property Style of iets dergelijks hebben. Ze verkrijgen hun weergave-instellingen via de Style property (waar je natuurlijk je stijlcomponent moet selecteren). Ook hier moet je TButtons en dergelijke weer zelf overerven. Dit is de meest bewerkelijke, maar ook de meest flexibele manier. Het is tevens de oplossing van ExpressLayoutControl voor speciale controls van Developer Express.
Na al dit typwerk hoop ik dat dit wél een goed antwoord is op je vraag :)
Kijk dat is praat :).
Ik denk dat dat component het beste / makkelijkste is, omdat je dan (als het goed is) in een keer van alles af bent.
Ik zal het eens overleggen met m'n baas.

Zoals je zelf ook al zegt, de andere oplossingen zullen ook werken, maar die kosten aardig wat tijd, en bij veel forms is dat op een gegeven moment niet meer te overzien.

Bedankt iig!

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

kijk ook eens op www.torry.net of de delphi super page, daar staan vaak nuttige componenten en zijn ook vaak trials beschikbaar...

Cogito Ergo Credo

Pagina: 1