15-10-2020, Saat: 21:52
Merhabalar @Fesih ARSLAN bey, @hayalyilmaz43 bey,
Bildirdiğiniz üzere özel pencere - frame - timage tasarlama konusunda uzun süre uğraştım. Fakat projede çok fazla if'li ileti olduğu için, bir türlü tam olarak senkron olarak cevap beklemesi gereken yerlerde durduramadım.
Aşağıda alternatif bir yol olarak (WindowsClick'te senkron olarak çalışan kodun, asenkron olarak değiştirilmiş hali olan) AndroidClick kısmını denedim. İç içe MessageDialog'lar, göze garip gelse de Android'de senkron olarak çalışıyor görünüyor. Projeyi Windows'tan Android'e aktarmadan önce görüşünüzü bildirebilir misiniz, sizce de bu kod uygun mu?
Bildirdiğiniz üzere özel pencere - frame - timage tasarlama konusunda uzun süre uğraştım. Fakat projede çok fazla if'li ileti olduğu için, bir türlü tam olarak senkron olarak cevap beklemesi gereken yerlerde durduramadım.
Aşağıda alternatif bir yol olarak (WindowsClick'te senkron olarak çalışan kodun, asenkron olarak değiştirilmiş hali olan) AndroidClick kısmını denedim. İç içe MessageDialog'lar, göze garip gelse de Android'de senkron olarak çalışıyor görünüyor. Projeyi Windows'tan Android'e aktarmadan önce görüşünüzü bildirebilir misiniz, sizce de bu kod uygun mu?
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Memo.Types,
FMX.ScrollBox, FMX.Memo, FMX.Controls.Presentation, FMX.StdCtrls,
FMX.DialogService;
type
TForm1 = class(TForm)
Windows: TButton;
Android: TButton;
Memo1: TMemo;
procedure WindowsClick(Sender: TObject);
procedure AndroidClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.WindowsClick(Sender: TObject);
var
i: integer;
netice: TModalResult;
function Teblig(konu: string): integer;
begin
TDialogService.PreferredMode := TDialogService.TPreferredMode.Platform;
FMX.DialogService.TDialogService.MessageDialog(konu,
TMsgDlgType.mtInformation, [TMsgDlgBtn.mbNo, TMsgDlgBtn.mbYes],
TMsgDlgBtn.mbNo, 0,
procedure(const AResult: TModalResult)
begin
if (AResult = mrYes) then
begin
netice := mrYes;
end;
if (AResult = mrNo) then
begin
netice := mrNo;
end;
end);
result := netice;
end;
begin
i := 0;
Memo1.Text := '1. başlangıç - i: ' + inttostr(i);
if (Teblig('2. bölümü çalıştırmak istiyor musunuz?') = mrYes) then
begin
inc(i);
Memo1.Lines.Add('2. bölüm - i: ' + inttostr(i));
end;
if (Teblig('3. bölümü çalıştırmak istiyor musunuz?') = mrYes) then
begin
inc(i);
Memo1.Lines.Add('3. bölüm - i: ' + inttostr(i));
end;
if (Teblig('Devam etmek istiyor musunuz?') <> mrYes) then
exit;
inc(i);
Memo1.Lines.Add('4. son - i: ' + inttostr(i));
end;
procedure TForm1.AndroidClick(Sender: TObject);
var
i: integer;
begin
i := 0;
Memo1.Text := '1. başlangıç - i: ' + inttostr(i);
TDialogService.PreferredMode := TDialogService.TPreferredMode.Platform;
FMX.DialogService.TDialogService.MessageDialog
(('2. bölümü çalıştırmak istiyor musunuz?'), TMsgDlgType.mtInformation,
[TMsgDlgBtn.mbNo, TMsgDlgBtn.mbYes], TMsgDlgBtn.mbNo, 0,
procedure(const AResult: TModalResult)
procedure Bolum3;
begin
TDialogService.PreferredMode := TDialogService.TPreferredMode.Platform;
FMX.DialogService.TDialogService.MessageDialog
(('3. bölümü çalıştırmak istiyor musunuz?'), TMsgDlgType.mtConfirmation,
[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo, 0,
procedure(const AResult: TModalResult)
procedure Bolum4;
begin
TDialogService.PreferredMode :=
TDialogService.TPreferredMode.Platform;
FMX.DialogService.TDialogService.MessageDialog
('Devam etmek istiyor musunuz?', TMsgDlgType.mtInformation,
[TMsgDlgBtn.mbNo, TMsgDlgBtn.mbYes], TMsgDlgBtn.mbNo, 0,
procedure(const AResult: TModalResult)
begin
if (AResult = mrYes) then
begin
inc(i);
Memo1.Lines.Add('4. son - i: ' + inttostr(i));
end;
if (AResult = mrNo) then
begin
exit;
end;
end);
end;
begin
if (AResult = mrYes) then
begin
inc(i);
Memo1.Lines.Add('3. bölüm - i: ' + inttostr(i));
Bolum4;
end;
if (AResult = mrNo) then
begin
Bolum4;
end;
end);
end;
begin
if (AResult = mrYes) then
begin
inc(i);
Memo1.Lines.Add('2. bölüm - i: ' + inttostr(i));
Bolum3;
end;
if (AResult = mrNo) then
begin
Bolum3;
end;
end);
end;
end.