Toon posts:

[delphi] tab navigatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Vraag:

Ik heb onder aan mijn applicatie 3 knoppen voor het toevoegen, wijzigen en verwijderen. Als je hier op klikt wordt er een globale variabele "actie" op 1,2 of 0 gezet. Dan bepaal ik via de activepageindex van mijn pagecontrol welk tablad er actief is.

zie er dus ongeveer zo uit:
code:
1
2
3
4
5
6
7
8
9
10
case activepageindex of
  0 : case actie of
        1: klant.toevoegen;
        2: klant.wijzigen(ID : integer);
        0: klant.verwijderen(ID : integer);
  1:  case actie of
        1: produkt.toevoegen;
        2: produkt.wijzigen(ID : integer);
        0: produkt.verwijderen(ID : integer):
end; //case


En zo bepaal ik dan welke procedure (toevoegen,wijzigen, verwijderen) van welke unit (klanten,produkten,offertes,facturen, etc. etc.) gestart wordt.

Volgens mij moet daar een mooiere manier voor zijn. Kan iemand helpen?

  • Boss
  • Registratie: September 1999
  • Laatst online: 14-02 16:23

Boss

+1 Overgewaardeerd

Ik denk dat je interface niet helemaal volgens de 'normen en waarden' is opgezet. Op het scherm staan drie verschillende onderdelen, elk op een eigen tabblad. Het lijkt mij dat dit dusdanog belangrijke onderdelen zijn dat ze ieder een eigen scherm verdienen. Een tabblad gebruik je doorgaans als je van 1 onderdeel verschillende sub-onderdelen wilt laten zien of om bij elkaar horende eigenschappen op te groeperen.

De werking van de ' toevoegen' etc. knoppen zou wat mij betreft niet afhankelijk mogen zijn van welk tabblad er actief is.

Maar als je het toch allemaal op 1 scherm wilt zetten met 1 rij knoppen die op verschillende onderdelen werken, is dit best een redelijke oplossing.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Boss schreef op donderdag 24 augustus 2006 @ 13:54:
Ik denk dat je interface niet helemaal volgens de 'normen en waarden' is opgezet. Op het scherm staan drie verschillende onderdelen, elk op een eigen tabblad. Het lijkt mij dat dit dusdanog belangrijke onderdelen zijn dat ze ieder een eigen scherm verdienen. Een tabblad gebruik je doorgaans als je van 1 onderdeel verschillende sub-onderdelen wilt laten zien of om bij elkaar horende eigenschappen op te groeperen.

De werking van de ' toevoegen' etc. knoppen zou wat mij betreft niet afhankelijk mogen zijn van welk tabblad er actief is.

Maar als je het toch allemaal op 1 scherm wilt zetten met 1 rij knoppen die op verschillende onderdelen werken, is dit best een redelijke oplossing.
Qua tabbladen is het gewoon naar wens ingericht. Dat tweede punt van je.... ja das een goeie: "waarom 1 setje knoppen? en waar niet 1 setje voor iedere tab bedoel je?" (ik snap zelf niet eens waarom ik het destijds zo verzonnen heb :)) lijkt me inderdaad ook netter. Alleen scheelt het natuurlijk wel een hoop controls.

  • Boss
  • Registratie: September 1999
  • Laatst online: 14-02 16:23

Boss

+1 Overgewaardeerd

Je zou ook een eigen navigatie component kunnen maken, en bij het wisselen van tabblad pas je van het navigatie component aan waarop het moet werken. Dan kan je ook meteen op dezelfde manier volgende / vorige / zoek / filter knoppen toevoegen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Je bedoeld waarschijnlijk polymorphisme. In het OnClick() event zit een Sender die je typecast naar TPageControl.
code:
1
 (Sender As TPageControl).ActivePageIndex


Dit hoort bij de basis van object gericht programmeren. Een beetje goed Delphi boek heeft daar wat over in staan.

Doet mij trouwens denken aan een oud project van een ex-collega van mij. Dat had in de OnLostFocus() (Visual Basic 5) van diverse componenten procedures staan. De tabindex moest dus altijd hetzelfde zijn anders werkte het niet.

[ Voor 28% gewijzigd door miniBSD op 24-08-2006 14:16 ]

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • Ozzy
  • Registratie: April 2000
  • Laatst online: 11-02 21:32

Ozzy

omnia mutantur, nihil interit

miniBSD schreef op donderdag 24 augustus 2006 @ 14:09:
Je bedoeld waarschijnlijk polymorphisme. In het OnClick() event zit een Sender die je typecast naar TPageControl.
code:
1
 (Sender As TPageControl).ActivePageIndex


Dit hoort bij de basis van object gericht programmeren. Een beetje goed Delphi boek heeft daar wat over in staan.
Volgens mij werkt dat zo niet hoor. De sender in het OnClick-event is de TButton waar op geklikt wordt, die kun je niet zo maar casten naar een TPageControl.

Als je de knoppen btnAdd, btnUpdate en btnDelete hebt kun je aan de sender zien op welke geclickt wordt. Je kunt die gewoon vergelijken met een knop:
code:
1
if Sender = btnAdd then


Wat je ook zou kunnen gebruiken is de Button.Tag, die je dus op 0, 1 of 2 zet, zoals je de global had. In dat geval kun je :
code:
1
case TButton(Sender).Tag of
gebruiken.

Je kunt ook gebruik maken van TActions, bijvoorbeeld actAddCustomer, actAddProduct etc. Je kunt dan de juiste actions aan de buttons koppelen in het OnChange of OnChanging event van de TPageControl. Het voordeel van de actions gebruiken zie je als je later besluit om ook via een menu functionaliteit aan te bieden bijvoorbeeld.

O dag schoonheid, dag schoonheid, dag schoonheid, dag, dag!


  • Boss
  • Registratie: September 1999
  • Laatst online: 14-02 16:23

Boss

+1 Overgewaardeerd

miniBSD schreef op donderdag 24 augustus 2006 @ 14:09:
Dit hoort bij de basis van object gericht programmeren. Een beetje goed Delphi boek heeft daar wat over in staan.
Ik denk dat het probleem dat hier beschreven wordt meer een interface probleem is dan een object-oriented.
Persoonlijk zou ik nooit voor een oplossing gaan waar compleet verschillende onderdelen in 1 scherm staan op verschillende tabbladen. Dat werkt contra-intuitief voor de gebruikers.
Maargoed, die keuze is gemaakt en men zal er al gewend aan zijn.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1