Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!
Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.
Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.
Ad Blocking Gedetecteerd
Vriendelijk verzoek om te overwegen Ad Blocking uit te zetten voor onze website.
We zijn afhankelijk van inkomen uit Advertenties om de website te kunnen draaien.
Je kunt ons ook op andere manieren ondersteunen (zie Ondersteun ons).
Ik heb wat lopen prullen met "CocoaPromptUser" in de hoop wat meer macOS compliant dialoog vensters te produceren ... Het idee was een overload te maken voor MessageDlg (de laatste parameter, de form, is het verschil). (ik heb mijn code ook in het officiële Lazarus forum geplaatst)
unit Unit1;
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls
, CocoaInt, CocoaAll;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
function MessageDlg( aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn; const Sender:TForm): TModalResult;
var
ButtonArrayPtr : PLongint; // Pointer to the button array
ButtonCount : Integer; // Number of buttons
Counter : integer;
NSParentWindow : NSWindow; // Parent Form that the sheet is attached to
DlgTypeID : longint; // DialogType for conversion from TMsgDlgType
ButtonIDs : array of Longint; // ButtonTypes for conversion from TMsgDlgBtn array
ButtonPressed : longint; // ModalResult which gets converted to TModalResult
aButton : TMsgDlgBtn;
DefaultButtonIndex : integer;
ReversedButtons : TMsgDlgButtons;
begin
// Show regular message dialog if no form assigned or form not showing
if (not Assigned(Sender)) or (not Sender.Visible) then
begin
Result := MessageDlg(aCaption, aMsg, DlgType, Buttons, HelpCtx, DefaultButton, Sender);
exit;
end;
{ Convert array of TMsgDlgBtn to idButtonXYZ (See LCLType) and convert default button (TMsgDlgBtn) to index }
ButtonCount := 0;
DefaultButtonIndex := -1;
ReversedButtons := [];
Result := mrNone;
if Buttons<>[] then
begin
for aButton in Buttons do
ReversedButtons := [aButton] + ReversedButtons;
for aButton in ReversedButtons do
begin
SetLength(ButtonIDs,ButtonCount+1);
case aButton of
mbYes : ButtonIDs[ButtonCount]:= 4;
mbNo : ButtonIDs[ButtonCount]:= 5;
mbOK : ButtonIDs[ButtonCount]:= 1;
mbCancel : ButtonIDs[ButtonCount]:= 2;
mbAbort : ButtonIDs[ButtonCount]:= 7;
mbRetry : ButtonIDs[ButtonCount]:= 8;
mbIgnore : ButtonIDs[ButtonCount]:= 9;
mbAll : ButtonIDs[ButtonCount]:= 10;
mbNoToAll : ButtonIDs[ButtonCount]:= 12;
mbYesToAll : ButtonIDs[ButtonCount]:= 11;
mbHelp : ButtonIDs[ButtonCount]:= 3;
else ButtonIDs[ButtonCount]:= 6; // mbClose
end;
if (aButton=DefaultButton) then
DefaultButtonIndex := ButtonCount;
inc(ButtonCount);
end;
end;
if (ButtonCount>0) then
ButtonArrayPtr:=@{%H-}ButtonIDs[0]{%H+}
else
ButtonArrayPtr:=nil;
{ Convert TMsgDlgType to idDialogXYZ (See LCLType) }
case DlgType of
mtWarning : DlgTypeID := $FF +1;
mtError : DlgTypeID := $FF +2;
mtInformation : DlgTypeID := $FF +3;
mtConfirmation : DlgTypeID := $FF +4;
else DlgTypeID := $FF +5; //mtCustom:
end;
NSParentWindow := nil;
if Assigned(Sender) then
begin
if not Sender.HandleAllocated then Exit;
NSParentWindow := NSView(Sender.Handle).window;
end
else
NSParentWindow := NSApplication.sharedApplication.keyWindow;
if Assigned(NSParentWindow) then
begin
ButtonPressed := CocoaPromptUser(aCaption, aMsg ,DlgTypeID, ButtonArrayPtr, ButtonCount, DefaultButtonIndex, 0, NSParentWindow, true);
case ButtonPressed of
1 : Result := mrOK;
2 : Result := mrCancel;
//3: Result := mrHelp // Help does not return from modal;
4 : Result := mrYes;
5 : Result := mrNo;
6 : Result := mrClose;
7 : Result := mrAbort;
8 : Result := mrRetry;
9 : Result := mrIgnore;
10 : Result := mrAll;
11 : Result := mrYesToAll;
12 : Result := mrNoToAll
else Result := mrNone;
end;
end
else
Result := mrNone;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('Caption','',mtInformation,[mbYes,mbNo,mbIgnore],0,mbYes,self);
end;
end.
Bevalt je wat je hier ziet, en wil je graag helpen?
Uiteraard is de beste manier van helpen, door anderen hier te helpen met hun vragen. Maar je kunt ons ook op andere manieren helpen:
- Shop bijvoorbeeld bij Amazon, het kost je niks extra, maar het kan zijn dat wij een kleine commissie ontvangen,
- stuur me een koffie via PayPal ($5, $10, $20, or zelf kiezen),
- je kunt ook een Patreon worden,
- of BitCoin (BTC), of BitCoinCash (BCH) doneren.
Deel:
Ad Blocking Gedetecteerd
Vriendelijk verzoek om te overwegen Ad Blocking uit te zetten voor onze website.
We zijn afhankelijk van inkomen uit Advertenties om de website te kunnen draaien.
Je kunt ons ook op andere manieren ondersteunen (zie Ondersteun ons).
7-Zip Gratis en erg goed compressie/decompressie programma voor Windows - Ondersteund legio formaten en is een van de meest efficiënte bestanden inpakker.
OldApps (iTunes) Hier kun je oudere iTunes versies (Windows) vinden ...
Links Pagina Deze en meer van onze favoriete link vindt je op de Links Pagina.
New Downloads
ConnectMeNow4-v4.0.9-macOS-arm64.dmgDate: 2023-05-28 - Size: 2.6 MBVersie 4 van ConnectMeNow - een gratis hulpmiddel om snel en eenvoudig netwerkverbindingen te mounten. Dit is de specifieke Apple Silicon version (niet geschikt voor Intel).
ConnectMeNow4-v4.0.9-macOS-x86-64.dmgDate: 2023-05-28 - Size: 3 MBVersie 4 van ConnectMeNow - een gratis hulpmiddel om snel en eenvoudig netwerkverbindingen te mounten. Dit is de specifieke Intel version die ook werkt op Apple Silicon Macs.
MovieScanner2-2.2.3-Windows-32bit-setup.exeDate: 2023-04-12 - Size: 18.6 MBEen klein programma, wat gebruik maakt van FFProbe jouw video bestanden te scannen, en de media details in een database op te slaan. Dit is de 32 bits versie voor Windows.
MovieScanner2-2.2.2-Linux-GTK-64bits.tar.gzDate: 2023-04-11 - Size: 29.2 MBEen klein programma, wat gebruik maakt van FFProbe jouw video bestanden te scannen, en de media details in een database op te slaan. Dit is de 64 bits versie voor Linux (GTK).
MovieScanner2-2.2.2-Linux-QT5-64bits.tar.gzDate: 2023-04-11 - Size: 29.1 MBEen klein programma, wat gebruik maakt van FFProbe jouw video bestanden te scannen, en de media details in een database op te slaan. Dit is de 64 bits versie voor Linux (QT5).
MovieScanner2-2.2.2-macOS-x86-64.dmgDate: 2023-04-11 - Size: 26.3 MBEen klein programma, wat gebruik maakt van FFProbe jouw video bestanden te scannen, en de media details in een database op te slaan. Dit is de 64 bits versie voor macOS.
Downloads Page Find these and more Downloads on the Downloads Page, where you will also find articles references, operating system requirements and categories.
Amazon Ads
Ondersteun ons door te winkelen bij Amazon.com, klik deze link, of klik een van de onderstaande links …
You can also sponsor us through these Amazon offerings:
Vriendelijk verzoek om te overwegen Ad Blocking uit te zetten voor onze website.We zijn afhankelijk van inkomen uit Advertenties om de website te kunnen draaien.Je kunt ons ook op andere manieren ondersteunen (zie Ondersteun ons links bovenin).