Naar huis
Delphi componenten
- TGolfTekst.
- TFilm: met deze component maak je een film zonder te hoeven programmeren.
Je kunt enkele films tegelijk draaien zonder dat het programma runt.
- TAnimatie: als TFilm, maar nu worden de plaatjes transparant
weergegeven en kunnen over het scherm bewegen...
- TVorm: uitbreiding van TShape, met driehoeken en achtergrondpatronen.
- TKlok: Een klok, waarvan de vorm kan worden veranderd. Hij loopt zodra
hij op een formulier wordt gedropt (ook als het programma nog niet
gecompileerd is). Gebruikt TVorm.
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...