Naar huis

Delphi componenten

Download deze componenten (74 kByte)      Lees artikel "Levende componenten"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Algemene tips:

U kunt Delphi gebruiken om
  • uw webcam uit te lezen
  • !
  • de RCX van LEGO Mindstorms te besturen (real time of via downloaden programma)
  • het Scratch PicoBoard te programmeren. Zie hier.
  • Velleman USB Experimenteer Interface Board (o.a. K8055N) programmeren. Kan ook met de nieuwste versie van Lazarus.
  • Programmeertips

  • Hints: andere kleur en tijd
  • Hints en knoppen met meer dan één regel tekst
  • Muisgebruik bij de bevel

    Hints: andere kleur en tijd
      Andere kleur: Application.HintColor := clRed
      Andere tijd zichtbaar (in milliseconden): Application.HintHidePause := 5000
      Normaal gaat dit alles vanzelf goed, maar als u toch de foutmelding 'undeclared identifier' krijgt, voeg dan Forms toe aan de uses lijst in de betreffende unit.
      Nog meer mogelijkheden staan in de Delphi hulp onder TApplication.
    Hints en knoppen met meer dan één regel tekst

    Zet voor elke volgende regel die u nodig hebt een #13 in de string. Omdat dit in de object-inspector niet kan moet het in het programma gebeuren (bijvoorbeeld in FromCreate).
    Voorbeeld:
    Stel dat het om een hint gaat bij een label en dat de naam van die label
    Label1 is. De code wordt dan:
    Label1.Hint := 'Bijna onmogelijke opdrachten' + #13 + 'Niet geschikt voor beginners!'
    Als u geen hints ziet dan moet u (via de Object Inspector of in de programmacode) ShowHint aanzetten EN ParentShowHint uitzetten
    Label1.ShowHint := true;
    Label1.ParentShowHint := false;
    Deze tip werkt vaak ook op andere plaatsen, bijvoorbeeld bij ShowMessage en Button.Caption.
    Muisgebruik bij de bevel
    Probleem: TBevel kent geen Muis of andere events. Stel, u heeft een TBevel nodig die wel op de muis reageert maar u wil niet zelf een nieuwe component schrijven.Toch wilt u de bevels op de gewone manier vanuit het "component palette" op het Form kunnen zetten. Misschien kunt u deze truc dan gebruiken: Maak een dummy component (bijvoorbeeld TClickBevel). Hierin maakt u de events zichtbaar die u nodig heeft (bijvoorbeeld OnClick). Ergens in het programma moeten de Events gekoppeld worden aan een procedure. Dit kan in de FormCreate of elders. Ga als volgt te werk: Klik op het "Form" waar de bevels op komen. Klik op het tabblad Events van de Object Inspector. Dubbelklik op de events die u voor de bevels nodig heeft (bijvoorbeeld op OnClick). Delphi maakt de benodigde procedures met een default naam. U moet op zijn minst commentaar in deze procedures zetten, anders haalt Delphi ze volautomatisch weer weg. DubbelKlik nu op FormCreate en zet de benodigde bevels op het Form. Koppel in de FormCreate-procedure de events van elke bevel die u op het formulier heeft gezet (voor zover u de events nodig heeft). U moet controleren of de event inderdaad van een bevel afkomstig is: If Sender is TBevel then With TBevel(Sender) do ..... Hopelijk maakt het onderstaande voorbeeld e.e.a. duidelijk.
    unit SomeUnit;
    interface
    uses ... // Hier laat ik iets weg
    type
    TClickBevel = class(TBevel) // Hier wordt een nieuwe dummy klasse gedefinieerd
       property OnClick; // Maak zichtbaar wat u nodig heeft, bijvoorbeeld deze 5 events
       property OnMouseUp;
       property OnMouseDown;
       property OnDragDrop;
       property OnMouseMove;
    end;
    TForm1 = class(TForm) //... hier laat ik weer een en ander weg (het meeste zet Delphi er neer)
       procedure FormCreate(Sender: TObject); // Deze en volgende regels genereert Delphi eventueel
       procedure FormClick(Sender: TObject);
       procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
       procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
       procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    end;

    var Form1: TForm1;

    implementation
    ....// Ik laat weer wat weg
    procedure TForm1.FormCreate(Sender: TObject);
    begin
       TClickBevel(Bevel1).OnClick := FormClick;
       TClickBevel(Bevel1).OnMouseUp := FormMouseUp;
       TClickBevel(Bevel1).OnMouseDown := FormMouseDown;
       TClickBevel(Bevel1).OnMouseMove := FormMouseMove;
       TClickBevel(Bevel2).OnClick := FormClick; // Voor elke bevel, maar alleen wat u nodig hebt
    end;

    procedure TForm1.FormClick(Sender: TObject);
    begin
       If Sender is TBevel then ShowMessage('Op ' + TBevel(Sender).Name + ' geklikt')
       else ShowMessage('Elders geklikt')
    end;

    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
       If Sender is TBevel then // Zet hieronder wat er moet gebeuren, bijvoorbeeld
       If TBevel(Sender).Style = bsRaised then TBevel(Sender).Style := bsLowered
       else TBevel(Sender).Style := bsRaised
    end;

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
        // Zet de gewenste actie hier (zie hierboven)
    end;

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
       If Sender is TBevel then Caption := IntToStr(X) + ' ' + IntToStr(Y)
    end;

    end.
    Opmerking: misschien wilt u een soortgelijke truc gebruiken om extra properties toe te voegen aan een component. Bedenk echter dat hiervoor geheugen nodig is, zodat er op den duur problemen kunnen ontstaan.

    Laatste verandering: 17-09-2014. Na ruim 13 jaar eindelijk weer een nieuwe versie van deze site...