Page 1 of 2 1 2 LastLast
Results 1 to 15 of 23

Thread: beveiligen TButton of TBitBtn?

  1. #1

    beveiligen TButton of TBitBtn?

    Weet iemand hoe ik het makkelijkst een TButton of TBitBtn kan beveiligen? Het gaat om in totaal 3 knoppen.

    Het gaat om een knoppen die elk een ander formulier openen.

    Het gaat erom dat niet jan en alleman zomaar bij die formulieren komen. En dit kan volgens mij het beste door de knop te beveiligen. Iets met een PassWordDialog? Maar hoe, uit de handleidingen van Delphi kan ik geen wijs worden?

    De procedure voor zo'n knop ziet er ongeveer als volgt uit:

    Code:
    procedure TTrillingFormulier.KnopEditLocClick(Sender: TObject);
    begin
         LocatieEdit.Show;
         FActiefFormulier:= afLocatie;
         TrillingFormulier.Enabled:= False;
    end;
    De andere knoppen (EditMachine en EditOpnemer) zien er bijna hetzelfde uit.
    expert of doing notting groetjes,

    gajes

  2. #2
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127

    Mischien heb je hier iets aan ?

    Hoi Gajes, ( wat betekent 'Gajes' voor jouw ?)

    Mischien dat je aan de onderstaande code wat hebt, ik gebruikt deze zelf ook, ik heb een apart paswoord scherm daar dien je het paswoord in te voeren en het leuke is dat deze elke dag verschillend is, dus m.a.w. datum afhankelijk,
    dus ik typ het paswoord in en dan is het 59+ de datum van vandaag zodoende is deze elke dag anders.

    Code:
    unit Wachtwoord;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons, Mask, ExtCtrls;
    
    type
      TFrmWachtwoord = class(TForm)
        BtOk: TBitBtn;
        Image1: TImage;
        BtCancel: TBitBtn;
        Invoer: TMaskEdit;
        Timer1: TTimer;
        Label2: TLabel; {bevat de tekst 'Voe'}
        Label3: TLabel; {bevat de tekst 'r'}
        Label4: TLabel; {bevat de tekst ' uw paswoord in.'}
        procedure FormCreate(Sender: TObject);
        procedure BtOkClick(Sender: TObject);
        procedure BtCancelClick(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Fout();
        procedure FormShow(Sender: TObject);
        procedure Label3Click(Sender: TObject);
    
      private
        { Private declarations }
      public
        vRetries: byte;
        vSucessfull: Boolean;
        { Public declarations }
      end;
    
    var
      FrmWachtwoord: TFrmWachtwoord;
    
    implementation
    
    uses Optie;
    
    {$R *.DFM}
    
    
    {Procedure als het Formulier wordt geactiveerd, Set focus op Invoerbox.}
    procedure TFrmWachtwoord.FormActivate(Sender: TObject);
    begin
      Invoer.SetFocus;
      Invoer.Text := '';
    end;
    
    
    {Procedure als het Formulier wordt geshowd, Plaats in vorig Formulier in statusbar "Wachtwoord poging : 1"}
    procedure TFrmWachtwoord.FormShow(Sender: TObject);
    begin
      vRetries := 1;
      FrmOptie.StatusBar2.Panels[0].Text := 'Wachtwoord poging :' +
        IntToStr(vRetries);
      Application.ProcessMessages;
    end;
    
    
    {Procedure als er op OK geklikt wordt, test+ date now + 59' of 'TEST + date now + 59' is Wachtwoord.}
    procedure TFrmWachtwoord.BtOkClick(Sender: TObject);
    var
      vGetal: Byte;
      vWachtwoord1: string;
      vWachtwoord2: string;
      Present: TDateTime;
      Year, Month, Day: Word;
    label
      Pass;
    label
      NotPassed;
    
    begin
      vGetal := 59; {Constante: optellen bij dagnummer van de maand.}
      vWachtwoord1 := 'test'; {Constante: Wachtwoord lowercase.}
      vWachtwoord2 := 'TEST'; {Constante: Wachtwoord UPPERCASE.}
      Present := Now;
      Decodedate(Present, Year, Month, Day);
    
      if vRetries = 3 then {Na 3x fout invoeren meteen terug naar vorig Formulier}
        begin
          Fout();
          goto NotPassed;
        end;
    
      if (Invoer.Text = vWachtwoord1 + IntToStr(Day + vGetal)) or
        (Invoer.Text = vWachtwoord2 + IntToStr(Day + vGetal)) then
        begin
          vRetries := 1;
          goto Pass; {Wachtwoord correct ingevoerd.}
        end
      else
        begin {Wachtwoord NIET correct ingevoerd.}
          Invoer.Text := '';
          Invoer.SetFocus;
          BtOk.Enabled := False;
          BtCancel.Enabled := False;
          inc(vRetries);
          Timer1.Enabled := True;
          FrmOptie.StatusBar2.Panels[0].Text := 'Fout wachtwoord !';
          Application.ProcessMessages;
          FrmOptie.Wachtwoord := False;
          goto NotPassed;
        end;
    
      Pass:
      FrmOptie.StatusBar2.Panels[0].Text := 'Wachtwoord correct.';
      FrmOptie.Wachtwoord := True;
      FrmWachtwoord.Close;
      FrmOptie.Show;
    
      NotPassed:
    end;
    
    
    {Procedure als er op Annuleren wordt geklikt, Plaats in vorig Formulier in statusbar "Wachtwoord geanuleerd en sluit het Formulier.}
    procedure TFrmWachtwoord.BtCancelClick(Sender: TObject);
    begin
      FrmOptie.StatusBar2.Panels[0].Text := 'Wachtwoord geannuleerd.';
      Application.ProcessMessages;
      FrmWachtwoord.Close;
      FrmOptie.Show;
    end;
    
    
    {Procedure als het Wachtwoord 3x fout wordt ingegeven, Sluit dan het Wachtwoord invoer scherm.}
    procedure TFrmWachtwoord.Fout();
    begin
      FrmOptie.StatusBar2.Panels[0].Text := '';
      Application.ProcessMessages;
      vRetries := 1;
      FrmWachtwoord.Close;
      FrmOptie.Show;
    end;
    
    
    {Procedure er een fout Wachtwoord wordt ingegeven, Plaats in vorig Formulier in statusbar "Wachtwoord Fout !" dit duurt 1.5sec dan nieuwe tekst.}
    procedure TFrmWachtwoord.Timer1Timer(Sender: TObject);
    begin
      FrmOptie.StatusBar2.Panels[0].Text := 'Wachtwoord poging :' +
        IntToStr(vRetries);
      Application.ProcessMessages;
      BtOk.Enabled := True;
      BtCancel.Enabled := True;
      Timer1.Enabled := False;
    end;
    
    
    {Procedure om Wachtwoord automatisch in te vullen als er op 'Voe(r)' geklikt.}
    procedure TFrmWachtwoord.Label3Click(Sender: TObject);
    var
      vvGetal: Byte;
      vvWachtwoord1: string;
      vPresent: TDateTime;
      vYear, vMonth, vDay: Word;
    
    begin
      vvGetal := 59; {Constante: optellen bij dagnummer van de maand.}
      vvWachtwoord1 := 'test'; {Constante: Wachtwoord lowercase.}
      vPresent := Now;
      Decodedate(vPresent, vYear, vMonth, vDay);
      Invoer.Text := vvWachtwoord1 + IntToStr(vDay + vvGetal)
    end;
    
    end.
    En als je het een beetje kan volgen zal je zien als je op het label3 klikt dat dan het correcte wachtwoord voor je wordt ingevoerd.

    Als je niets van de bovenstaande code begrijpt dan wil ik het op je verzoek wel even 'herschrijven' of nader toelichten.

    Ik hoop dat je er uit komt en dat je er wat aan hebt, dit is dus uiteraard nog niet gereed om buttons te disabelen, want het was een unit voor mijn eigen.

    Alvast suc6, ik hoor het wel.

    Ps. de knoppen beveiligen is simpel, standaard op gedisabled zetten en dan mbv een andere knop een pasword scherm openen en aan de hand van het resultaat dat daar uit komt de correcte knoppen enabelen.


    Groeten uit een lekker Warm en benauwd Alkmaar.
    RLD

  3. #3
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127

    Thumbs up Sorry, ik kon het niet laten.

    Hoi Gajes, ik kon het niet laten om je zo te laten zitten,
    ik moet me tenslotte ook even van mijn 'goedste' kant laten zien.

    Aan deze reply zit ook een Attachment met een beetje sourcecode. Dit is gebaseert op 2 forms,
    de 1e met jouw knoppen en de 2e is wachtwoord.

    De Wachtwoorden: gelden alleen vandaag morgen weer anders.
    Alle buttons Enabled = 'wachtwoord68' of 'WACHTWOORD68'
    1e button Enabled = 'loc68'
    2e button Enabled = 'machine68'
    3e button Enabled = 'opnemer68'

    morgen is het uiteraard xxx+69 want 59+datum..
    Ik hoop dat je hier wat aan hebt ik heb mijn best gedaan.

    Ik hoor het wel.
    Suc6

    PS. gedevelop. met D5Ent.
    Ricky Ricardo a.k.a. Richard.
    RLD

  4. #4
    En via een omwegje: het bestand
    Marcel

  5. #5
    Bedank heren voor zover.

    Ik zal proberen om er vandaag mee aan de slag te gaan, maar of het lukt weet ik niet.

    Richard, wat bedoel je precies met:

    ( wat betekent 'Gajes' voor jouw ?)
    expert of doing notting groetjes,

    gajes

  6. #6
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127

    Wink Wat Gajes betekent ?

    Nou heel simpel, mijn naam is Richard is de jouwe dan Gajes ?, of is het gewoon een afkorting of een synoniem van 'ik ben tuig van de rigel' of zo iets.

    Niet kwaad bedoeld hoor, gewoon een stukje intresse.

    Groetjes.

    Ps. nog ff over het bovenstaande source stukje,
    je kan het beste alle code waar Application.ProcessMessages wordt gebruikt vervangen
    voor een TrillingFormulier.StatusBar1.Repaint
    Last edited by Richard; 10-May-01 at 23:05.
    RLD

  7. #7
    Heb je ook iets dat met maar een wachtwoord werkt?
    Je zei dat het simpel was, maar zou je het willen uitleggen, kan desnoods via e-mail.

    Ik zal proberen om er vandaag mee aan de slag te gaan, maar of het lukt weet ik niet.
    Zoals het er nu naar uitziet wordt het hem niet vandaag. Omdat ik nog steeds met het afdrukken van de grafiek bezig ben. Niet die van het component TGraph maar die andere, die aangemaakt component (TGrafiek).
    De bedoeling is om de data uit te laten lezen en die dan te printen m.b.v. MoveTo en LineTo (PolyLine of iets degelijks). De data staat waarschijnlijk in een array. Nu is het zaak om die array in te lezen.

    Nou heel simpel, mijn naam is Richard is de jouwe dan Gajes ?, of is het gewoon een afkorting of een synoniem van 'ik ben tuig van de rigel' of zo iets. Niet kwaad bedoeld hoor, gewoon een stukje intresse.
    Ik weet dat het niet kwaad bedoeld was.
    Gajes is een nickname. Heeft ook niks te maken met 'ik ben tuig van de rigel', in tegen deel.
    Zo heette onze poes, de naam was verzonnen door mijn zus en ik vond dat voor een nickname ook wel leuk, vandaar.
    expert of doing notting groetjes,

    gajes

  8. #8
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127

    Question hmmm ?

    Hoi gajes, hmmmmm ?

    Heb je ook iets dat met maar een wachtwoord werkt?
    Bedoel jij met maar 1 wachtwoord of met (een) wachtwoord ?
    of bedoel je met een 'vast' wachtwoord ?
    Als met 1 wachtwoord bedoeld, dan staat deze ook in de source,
    dan zal jij of ik even de andere opties er uit moet halen.

    Of is dit helemaal niet wat je zoekt ?
    Of mischien een ander principe ?

    Je zei dat het simpel was, maar zou je het willen uitleggen, kan desnoods via e-mail.
    Waar heb ik gezegt dat het simpel is Gajes ? ik bedoelde de
    uitleg van je naam, ik dacht dat is wel simpel, en inderdaad een
    grappige nickname.

    En wat wil je uitgelegd hebben, het complete source'je ?
    als dat zo is laat het me even weten en dan zal ik hem even
    voorzien van commentaar.

    Goetjes, R.R.
    RLD

  9. #9
    kan desnoods via e-mail.
    Kom nou, we zijn 't net lekker aan het volgen.
    Marcel

  10. #10
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127

    Mind Reader ????

    Ja marc, inderdaad, dat was mijn gedachtegang ook al bij het vorige reply, we laten de rest ook meegenieten.


    Is altijd handig voor iemand anders, en via de mail wordt dat
    dan een beetje lastig.
    RLD

  11. #11
    Wat is voor jou het verschil tussen 1 wachtwoord, (een) wachtwoord en een vast wachtwoord? Dit is lijkt toch opelkaar? of zie ik het verkeerd en is dit in delphi anders?

    Het mooiste zou zijn dat je een wachtwoord instelt en dat die je die evt. kan veranderen zonder dat je het programma opnieuw moet uitvoeren met delphi. Zoiets als bij het instellen van je windows-wachtwoord.

    Ka je in uitleggen hoe dat wachtwoord werkt? M.b.v. een voorbeeld, met b.v. het wachtwoord van vandaag en dan als je morgen zou inloggen? Dit is misschien wel handig voor andere.

    Ik kan de units wel openen, maar de formulieren niet. Dit heeft te maken met delphi 3.

    .
    Waar heb ik gezegt dat het simpel is Gajes ? ik bedoelde de uitleg van je naam, ik dacht dat is wel simpel, en inderdaad een
    grappige nickname.
    Ha dan had ik het verkeerd begrepen
    expert of doing notting groetjes,

    gajes

  12. #12
    5th member of nldelphi
    Join Date
    Mar 2001
    Location
    Alkmaar
    Posts
    2,127
    Hoi Gajes, hier zijn we weer, alles goed met je ?
    Aan deze kant in elk geval wel.




    Wat is voor jou het verschil tussen 1 wachtwoord, (een) wachtwoord en een vast wachtwoord?
    In de huidige source die je hebt zijn 4 verschillende wachtwoorden verwerkt,
    1 wachtwoord om alle 3 de buttons tegelijk te enablen, en
    3 aparte wachtwoorden waarvan voor elke button 1 apart wachtwoord. Dit zijn er dus in totaal 4 verschillende.

    Met 1 wachtwoord bedoel ik dat dan alle gekozen buttons tegelijk
    geenabled worden.

    En met een 'vast' wachtwoord daar bedoel ik een wachtwoord
    mee die gedefineert is in je registry of in een ini file of
    in de source maar dan NIET datum afhankelijk.
    dus elke dag het zelfde wachtwoord.






    Dit is lijkt toch opelkaar? of zie ik het verkeerd en is dit in delphi anders?
    Ik weet het niet, ik vindt dat er toch wel een verschil tussen deze
    3 optie's zitten, maar goed dat is persoonlijk denk ik.





    Het mooiste zou zijn dat je een wachtwoord instelt en dat die je die evt. kan veranderen zonder dat je het programma opnieuw moet uitvoeren met delphi. Zoiets als bij het instellen van je windows-wachtwoord.
    Dit kan natuurlijk, zoals eerder vermeld maar dan zal dit wachtwoord apart moeten worden wegeschreven naar een ini file of naar je registry, persoonlijk vindt ik dat een beetje te veel
    van het goede.






    Kan je in uitleggen hoe dat wachtwoord werkt? M.b.v. een voorbeeld, met b.v. het wachtwoord van vandaag en dan als je morgen zou inloggen? Dit is misschien wel handig voor andere.
    Oke goed, als eerst het 'master' paswoord is in de source:
    wachtwoord(xx) of WACHTWOORD(xx)
    (xx) staat voor het getal 59+ de datum van vandaag dus vandaag
    is het de 14e dus zal het 'master' paswoord voor vandaag als
    volgt zijn: wachtwoord73 of WACHTWOORD73, aangezien het
    morgen de 15e is dan zal het volgende gelden: wachtwoord74 of
    WACHTWOORD74, dus met ander woorden je hebt altijd het getal
    59 en daar tel je de huidige datum bij op en dat voeg je achter het passwoord.
    Waarom zo, op deze manier heb je dus elke dag een ander
    passwoord en is het lastiger om het te onthouden, denk maar
    eens aan iemand die over je schouder meekijkt, die zal de volgende dag
    een houten bek hebben, want het passwoord is weer veranderd.
    De ander drie wachtwoorden zijn elk voor 1 button:
    loc73 voor vandaag, en loc80 voor a.s. Maandag. deze enabled de
    button 'Locatie'.
    machine73 voor vandaag, en machine75 voor a.s. Woensdag.
    deze enabled de button 'Machine'.
    opnemer73 voor vandaag, en opnemer60 voor als het de 1e van een willekeurige maand is.
    deze enabled de button 'Opnemer'.

    Zoals je hierboven kan zien zijn deze wachtwoord wel degelijk
    Case Sensitive, en het 'master' wachtwoord in zekere zin niet.




    Ik kan de units wel openen, maar de formulieren niet. Dit heeft te maken met delphi 3.
    HMM, da's lastig, ik draai zelf D5 Ent. en ik heb geen D3 op de
    plank liggen om het uit te proberen voor je.
    Ik weet niet in hoeverre D5 'BACKWARDS COMPATIBLE' is. ?
    Ik heb hier dus geen enkele ervaring mee hoe dat in D3 gaat en
    of het uberhaupt wel in die versie werkt, dat zal je even aan
    Marcel, Matthijs, Marco moeten vragen (ook toeval 3x een M.)
    Ik hoop dat er wat aan hebt aan al deze opmerkingen en commentaar.
    Als je nog meer wil weten ik wil graag helpen. geef maar een Yell.
    en ik luister bijna meteen.

    Goetjes uit een iets kouder Alkmaar, maar goed ook want als het
    zo warm is dan komt er volgens mij bijna niemand op het Forum.


    PS. lukt het je wel om de source een beetje aan te passen en dan
    te laten werken.
    Zo niet geef me dan even via de PM (private message) je Email
    adress de mail ik de eventuleel de Executeble wel even, ik
    wil deze ook wel op het Forum zetten, maar hij is 300k en dat is
    volgens mij 200k teveel. om te kunnen plaatsen.
    RLD

  13. #13
    Ik weet niet in hoeverre D5 'BACKWARDS COMPATIBLE' is. ?
    Een formulier van Delphi 5 zal een aantal properties hebben die Delphi 3 niet kent. Als je een formulier dus hebt geopend in 5 en daarna weer wilt openen in 3 zul je foutmeldingen krijgen. Als je deze 'ignored' zul je in de meeste gevallen weer een werkend formulier hebben.

    Het zou natuurlijk ook nog kunnen zijn dat er extra componenten geïnstalleerd moeten zijn, bijvoorbeeld omdat bij de ontwikkeling een third party package is gebruikt. Maar dat hebben we snel gezien als je de foutmeldingen geeft die je krijgt als je het formulier probeert te openen.
    Marcel

  14. #14
    Een formulier van Delphi 5 zal een aantal properties hebben die Delphi 3 niet kent. Als je een formulier dus hebt geopend in 5 en daarna weer wilt openen in 3 zul je foutmeldingen krijgen. Als je deze 'ignored' zul je in de meeste gevallen weer een werkend formulier hebben.

    Het zou natuurlijk ook nog kunnen zijn dat er extra componenten geïnstalleerd moeten zijn, bijvoorbeeld omdat bij de ontwikkeling een third party package is gebruikt. Maar dat hebben we snel gezien als je de foutmeldingen geeft die je krijgt als je het formulier probeert te openen.
    Hij geeft de volgende foutmelding:

    Error creating form: Invalid stream format

    Heb je hier wat aan? Hij geeft geen optie om het te ignoren, dus ligt het waarschijnlijk aan de 2e mogelijkheid die je hebt gegeven. Ik heb de beide units, dus ik zal eens proberen of het lukt met het opnieuw opzetten van het geheel, dus units overnemen. jullie horen nog van me.
    expert of doing notting groetjes,

    gajes

  15. #15
    Old Navigator Matthijs's Avatar
    Join Date
    Mar 2001
    Location
    Ede, NL. Delphi: Delphi 7/2005 :). Matthijs schrijf je Matthijs
    Posts
    2,199

    Talking dfm format

    Hi,

    je moet er rekening mee houden dat de dfm-files in D5 in puur ascii worden opgeslagen en in oudere versie in een stream-formaat.
    Wat je kunt doen is de D3/4 dfm-files met behulp van convert.exe omzetten naar txt-format en deze files dan hernoemen in *.dfm. Op die manier zou je ze wel in D5 moeten kunnen gebruiken.
    What's in a sig?

    Would my posting be less valuable if it didnot have a sig? (Vrij naar William S.)

    Let op de kleine lettertjes. For all postings: e&oe!
    This program performed an illegal function, the police are on their way

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Replies: 17
    Last Post: 20-Oct-04, 13:27
  2. website beveiligen met apache
    By Luig?¡ in forum Koffiehoek
    Replies: 2
    Last Post: 24-Jun-04, 10:33
  3. Streaming van TBitBtn op Frame
    By Pogo in forum Algemeen
    Replies: 1
    Last Post: 02-Mar-04, 13:33
  4. Replies: 0
    Last Post: 07-Nov-03, 01:33

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
  •