Results 1 to 13 of 13

Thread: activecontrol activeren na druk op button

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747

    activecontrol activeren na druk op button

    Ik heb het volgende.
    Er is een scherm met een aantal DBEdits. D.m.v. van bepaalde defaultwaarden uit een tabel, kan ik bepalen welke DBEdits enabled moeten zijn. Tijdens de bepaling kan ik dan ook de TForm.Activecontrol bepalen. Tot zover geen probleem. Als ik nu op een button drukt om een nieuw record aan te maken, zal ik kunnen bepalen welke DBEdit de eerste focus krijgt (bijv. DBEdit1.focus). Maar in principe heb ik in TForm.Activecontrol al bepaald wat de eerste focus wordt.
    Nu is mijn vraag: hoe kan ik dir Activecontrol activeren als ik bijvoorbeeld op een button drukt?
    Delphi is great. Lazarus is more powerfull

  2. #2
    *+E13818MU01F0F* Norrit's Avatar
    Join Date
    Aug 2001
    Location
    Landgraaf
    Posts
    967
    Veranderd de ActiveControl niet naar de button waar je op klikt ???

    In ieder geval kun je gewoon een SetFocus doen. Misschien even typecasten naar TWinControl:
    Code:
      if ActiveControl.InheritsFrom(TWinControl) then
        TWinControl(ActiveControl).SetFocus();
    Objective reality is a delirium caused by lack of alcohol in blood

  3. #3
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Helaas wordt niet de juiste focus gegeven.
    Delphi is great. Lazarus is more powerfull

  4. #4
    Na de click op je button heeft die volgens mij de focus. Activecontrol is dan dus de button.
    Waarom niet iets simpels als DBEdit1.Setfocus, zoals Norrit al voorstelde?

    Bart

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Precies zoals ik zei. Het kan zijn dat die dbedit disabled is. Natuurlijk kan ik weer afgaan op de defaultwaarden, die ik heb opgehaald, maar ik heb al in de ActiveControl aangegeven dat dat de eerste component moet zijn, die gefocused wordt.
    Delphi is great. Lazarus is more powerfull

  6. #6
    Eigenlijk zou zelfs ActiveControl overbodig moeten zijn. Als de TabOrder van al je controls goed staat kun je gewoon het eerste enabled control volgens die taborder focus geven:

    Delphi Code:
    1. SelectNext(nil, True, True);
    Marcel

  7. #7
    Quote Originally Posted by jkuiper View Post
    ....maar ik heb al in de ActiveControl aangegeven dat dat de eerste component moet zijn, die gefocused wordt.
    Dat kun je dus niet in ActiveControl aangeven. Wat je daar aangeeft is het component die NU gefocused is. @Design is dat hetzelfde maar na focus aanpassingen @Run is dat niet meer gegarandeerd.
    De beste manier om te leren is door fouten te maken.
    80 procent van alle leugens die jij en ik vertellen blijft onopgemerkt

  8. #8
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Oke, dat is duidelijk. Dan gan we maar zelf bepalen waar de focus moet komen.
    Delphi is great. Lazarus is more powerfull

  9. #9
    Heb je de code van Marcel al geprobeerd?
    De beste manier om te leren is door fouten te maken.
    80 procent van alle leugens die jij en ik vertellen blijft onopgemerkt

  10. #10
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Dat doe ik in elk scherm. Maar het is bijvoorbeeld zo:
    Ik heb drie DBEdits.
    Klant 1 gebruikt ze allemaal
    Klant 2 gebruikt de eerste niet, omdat deze voor hem automatisch gaat.
    Dus als men een record gaat aanmaken, wordt de focus bij klant 1 op de eerste gelegd en bij klant 2 op de tweede. Ik zie dan niet in dat SelectNext() dit voor mij gaat oplossen.
    Als men dus al op DBEdit3 staat en er wordt een record aangemaakt, is het handig dat de goede DBEdit als eerst wordt gefocused.
    Delphi is great. Lazarus is more powerfull

  11. #11
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    Waarom hou je in je form niet gewoon een property bij die je bij het initialiseren een waarde geeft: namelijk de juiste TDBEdit (of andere control)?
    All methodologies are based on fear. -- Kent Beck.

  12. #12
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    5,133
    Quote Originally Posted by jkuiper View Post
    Klant 2 gebruikt de eerste niet, omdat deze voor hem automatisch gaat.
    ...en dus kun je die Edit disablen, of zet je daarvan de TabStop property op False, of kun je die Edit hiden? Deze oplossingen hebben allen als resultaat dat als je met tab door je controls heenwandeld, dat die betreffende Edit dan niet gefocused wordt en dus wordt overgeslagen.

    Bovendien kun je altijd met SelectFirst() de focus plaatsen op het eerste control in de TabOrder welke enabled is, zichtbaar is en welke de TabStop property op True heeft staan.
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  13. #13
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Ik denk, na in de help gekeken te hebben, de SelectFirst wel gedeeltelijk het probleem oplost. Ik zal een kijken.
    Delphi is great. Lazarus is more powerfull

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •