Een goede grap mag vrienden kosten.
oogjes open, snaveltjes dicht
Kom op, niet zo flauw, dacht je dat ik dat niet geprobeerd had? Er verschijnt een ongelooflijke rij verwijzingen naar code in C of C++ waar ik niet zo veel mee kan. In Delphi help kan ik het antwoord niet vinden en in P&W ook niet.
Een goede grap mag vrienden kosten.
Die eerste link geeft toch aardig wat aanknopingspunten dacht ik zo
Er staan een aantal API's die je net zo goed in Delphi kunt gebruiken. En die API's staan ook weer in de Delphi help
oogjes open, snaveltjes dicht
Een dialog unit is 1/8 van de hoogte van een hoofdletter in het font van een dialog (meestal Sans Serif 8pt), maar ze zijn een beetje uit de mode geraakt sinds TrueType fonts en het verdwijnen van win3.11. Mag ik vragen waarom je ze nodig hebt? Misschien is er een modernere oplossing voor je probleem.
We adore chaos because we like to restore order - M.C. Escher
tomatoman schreef op 09 maart 2003 @ 18:33:
Kom op, niet zo flauw, dacht je dat ik dat niet geprobeerd had? Er verschijnt een ongelooflijke rij verwijzingen naar code in C of C++ waar ik niet zo veel mee kan. In Delphi help kan ik het antwoord niet vinden en in P&W ook niet.
Zoals Don Facundo al zegt: je krijgt hiermee toch een hele hoop tips? C/C++ code kan je toch makkelijk naar Delphi-code omzetten? Vanuit Delphi kan je ook API calls doen, etc...
https://fgheysels.github.io/
niet alle api calls zijn goed omgezet in delphi. Sommige api calls die beschikbaar zijn in C/C++ zijn niet aanwezig in Delphi volgens mij
Het wel of niet kunnen maken van een API call heeft niet zo zeer met de taal te maken. Omdat MicroSoft zijn API's ook defineerd in C is het vaak sneller in C/C++ compilers te vinden. API call's zijn niets anders dan aanroepen van functies in bepaalde DLL's. Als je de juiste import van de DLL functie in Delphi maakt kan je de functie aanroepen. Als je het allemaal niet zelf wilt doen kan je op www.delphi-jedi.org een meer completere vertaling vinden van de WinAPI en andere API's.Just_a_Gamer schreef op 09 March 2003 @ 19:14:
niet alle api calls zijn goed omgezet in delphi. Sommige api calls die beschikbaar zijn in C/C++ zijn niet aanwezig in Delphi volgens mij
We adore chaos because we like to restore order - M.C. Escher
Ik ben bezig om een wizard in Windows 2000-stijl te implementeren in een TComponent met behulp van een property sheet. Na ruim duizend regels code is die bijna af, maar ik zat met het probleem dat de layout van het niet-gereserveerde gebied in de welkomstpagina van de wizard (waar je zelf al je contols in mag pleuren) alleen in dialog units is gedefinieerd en niet in pixels. Datzelfde geldt voor de uitlijning van allerlei controls op de wizardpagina's (zie hier). Daar werd ik niet zo blij van.LordLarry schreef op 09 March 2003 @ 19:00:
Mag ik vragen waarom je ze nodig hebt? Misschien is er een modernere oplossing voor je probleem.
Een goede grap mag vrienden kosten.
[knip]
[ Voor 99% gewijzigd door Tomatoman op 09-03-2003 19:52 . Reden: verkeerde knop gedrukt (quote i.p.v. edit) ]
Een goede grap mag vrienden kosten.
Weer wat bijgeleerdLordLarry schreef op 09 maart 2003 @ 19:29:
[...]
Het wel of niet kunnen maken van een API call heeft niet zo zeer met de taal te maken. Omdat MicroSoft zijn API's ook defineerd in C is het vaak sneller in C/C++ compilers te vinden. API call's zijn niets anders dan aanroepen van functies in bepaalde DLL's. Als je de juiste import van de DLL functie in Delphi maakt kan je de functie aanroepen. Als je het allemaal niet zelf wilt doen kan je op www.delphi-jedi.org een meer completere vertaling vinden van de WinAPI en andere API's.
Het wil nog niet lukken. Ik heb GetDialogBaseUnits gedefinieerd:
Aan de manier te zien waarop de wizard zichtbaar wordt, is AveCharSize niet goed berekend. AveCharSize krijgt de waarde (6, 12). Na wat terugrekenen aan de hand van wat ik in de wizard had moeten zien, kom ik tot de conclusie dat AveCharSize eigenlijk de waarde (6, 13) had moeten hebben. Anders gezegd: mijn plaatje is niet iets te weinig uitgerekt in de hoogte.
Ik heb ook nog een andere berekening geprobeerd aan de hand van GetExtentPoint, maar ook dan krijg ik de foutieve waarde (6,12).
Ziet iemand wat ik fout doe?
Delphi:
Daarna kan er vrolijk worden omgenummerd:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| interface var AveCharSize: TPoint; function GetDialogBaseUnits: TSmallPoint; stdcall; implementation function GetDialogBaseUnits: TSmallPoint; external user32 name 'GetDialogBaseUnits'; initialization AveCharSize.X := MulDiv(GetDialogBaseUnits.x, 72, Screen.PixelsPerInch); AveCharSize.Y := MulDiv(GetDialogBaseUnits.y, 72, Screen.PixelsPerInch); end; |
Delphi:
1
2
3
4
5
| function DlusToPixels(Dlus: TPoint): TPoint; begin Result.X := MulDiv(Dlus.X, AveCharSize.X, 4); Result.Y := MulDiv(Dlus.Y, AveCharSize.Y, 8); end; |
Aan de manier te zien waarop de wizard zichtbaar wordt, is AveCharSize niet goed berekend. AveCharSize krijgt de waarde (6, 12). Na wat terugrekenen aan de hand van wat ik in de wizard had moeten zien, kom ik tot de conclusie dat AveCharSize eigenlijk de waarde (6, 13) had moeten hebben. Anders gezegd: mijn plaatje is niet iets te weinig uitgerekt in de hoogte.
Ik heb ook nog een andere berekening geprobeerd aan de hand van GetExtentPoint, maar ook dan krijg ik de foutieve waarde (6,12).
Ziet iemand wat ik fout doe?
Een goede grap mag vrienden kosten.
Voor de geïnteresseerden:
Na veel testen heb ik niet één keer gezien dat de venstergrootte anders werd, hoe ik de Windows-instellingen voor knopgrootte, standaardlettertype en dergelijke ook instelde. AveCharSize zou dus ook onveranderlijk (6, 13) moeten zijn. Daarom heb ik het mezelf gemakkelijk gemaakt en AveCharSize hard gecodeerd:
AveCharSize := Point(6, 13);
Case closed
Na veel testen heb ik niet één keer gezien dat de venstergrootte anders werd, hoe ik de Windows-instellingen voor knopgrootte, standaardlettertype en dergelijke ook instelde. AveCharSize zou dus ook onveranderlijk (6, 13) moeten zijn. Daarom heb ik het mezelf gemakkelijk gemaakt en AveCharSize hard gecodeerd:
AveCharSize := Point(6, 13);
Case closed
Een goede grap mag vrienden kosten.
Pagina: 1