Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ShareSheetAction ile döküman paylaşmak mümkün mü?
#1
Herkese iyi çalışmalar dilerim

Sürdürmekte olduğum projem için rapor oluşturup paylaşmak istiyorum, oluşturduğum raporu png olarak TImage ile gösterip ShowShareSheetAction ile pngyi paylaşabiliyorum. Fakat yapmak istediğim veritabanında binary cinsinde tuttuğum pdfleri döküman olarak göndermek. 

Kullandığım kod:
ShowShareSheetAction.Bitmap:=Image1.Bitmap;

Stream oluşturup 
Stream := qryGenel.CreateBlobStream(qryGenel.FieldByName('Rapor'), bmRead);
ShowShareSheetAction.Bitmap.LoadFromStream(Stream );

Kodun bu kısmında bitmape yüklerken hata alıyorum pdfi.
Yardımlarınızı bekliyorum Smile
Cevapla
#2
Merhaba,

Aşağıdaki kodda image harici dosyaların paylaşılabilirliği sağlanmış fakat Android ve Windows tarafında. iOS ile ilgili bir talebiniz varsa biraz araştırmak gerekiyor. 

unit share_text;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Graphics, FMX.Dialogs, System.IOUtils, FMX.StdCtrls

  {$IFDEF Android}
  , Androidapi.JNI.Os
  , Androidapi.JNI.GraphicsContentViewText
  , Androidapi.JNI.JavaTypes
  , Androidapi.Helpers
  , Androidapi.JNI.Net
  , Androidapi.JNI.Webkit
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
  , ShellApi
  , Windows
  {$ENDIF}

  ;

type
  TForm1 = class(TForm)
    cmdShare: TButton;
    procedure cmdShareClick(Sender: TObject);
    procedure ShareFile (file_name: string);
  private
    { Private declarations }
    {$IFDEF Android}
      an_intent: JIntent;
      function findMimeType (file_extension : string) : JString;
    {$ENDIF}

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

{$IFDEF Android}
function TForm1.findMimeType (file_extension : string) : JString;
begin
    file_extension := StringReplace (file_extension, '.', '', []);
    result := TJMimeTypeMap.JavaClass.getSingleton.getMimeTypeFromExtension
        (StringToJString (file_extension));
end;
{$ENDIF}

procedure TForm1.ShareFile (file_name: string);
  {$IFDEF Android}
  var
      fileuri: JParcelable;
  {$ENDIF}
begin
  {$IFDEF Android}
    an_intent := TJIntent.Create;
    an_intent.setAction (TJIntent.JavaClass.ACTION_SEND);
    an_intent.setType (findMimeType (TPath.GetExtension (file_name)));
    fileuri := JParcelable (TJNet_Uri.JavaClass.fromFile
      (TJFile.JavaClass.init (StringToJString (file_name))));
    an_intent.putExtra (TJIntent.JavaClass.EXTRA_STREAM, fileuri);
    SharedActivity.startActivity (TJIntent.JavaClass.createChooser
      (an_intent, StrToJCharSequence ('Share With')));
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
    ShellExecute (0, 'open', PChar (file_name), nil, nil, SW_SHOWNORMAL);
  {$ENDIF}
end;

procedure TForm1.cmdShareClick(Sender: TObject);
var
    file_name : string;
    a_file : TextFile;
begin
    file_name := System.IOUtils.TPath.GetTempPath +
        System.IOUtils.TPath.DirectorySeparatorChar + 'text_file.txt';

    // open a file for writing
    AssignFile (a_file, file_name);
    ReWrite (a_file);

    // write to a file
    WriteLn (a_file, 'share a text file on a mobile device');

    // close the file
    CloseFile (a_file);

    ShareFile (file_name);
end;

end.


Kaynak : Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#3
(07-10-2019, Saat: 17:47)caoster Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,

Aşağıdaki kodda image harici dosyaların paylaşılabilirliği sağlanmış fakat Android ve Windows tarafında. iOS ile ilgili bir talebiniz varsa biraz araştırmak gerekiyor. 

unit share_text;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Graphics, FMX.Dialogs, System.IOUtils, FMX.StdCtrls

  {$IFDEF Android}
  , Androidapi.JNI.Os
  , Androidapi.JNI.GraphicsContentViewText
  , Androidapi.JNI.JavaTypes
  , Androidapi.Helpers
  , Androidapi.JNI.Net
  , Androidapi.JNI.Webkit
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
  , ShellApi
  , Windows
  {$ENDIF}

  ;

type
  TForm1 = class(TForm)
    cmdShare: TButton;
    procedure cmdShareClick(Sender: TObject);
    procedure ShareFile (file_name: string);
  private
    { Private declarations }
    {$IFDEF Android}
      an_intent: JIntent;
      function findMimeType (file_extension : string) : JString;
    {$ENDIF}

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

{$IFDEF Android}
function TForm1.findMimeType (file_extension : string) : JString;
begin
    file_extension := StringReplace (file_extension, '.', '', []);
    result := TJMimeTypeMap.JavaClass.getSingleton.getMimeTypeFromExtension
        (StringToJString (file_extension));
end;
{$ENDIF}

procedure TForm1.ShareFile (file_name: string);
  {$IFDEF Android}
  var
      fileuri: JParcelable;
  {$ENDIF}
begin
  {$IFDEF Android}
    an_intent := TJIntent.Create;
    an_intent.setAction (TJIntent.JavaClass.ACTION_SEND);
    an_intent.setType (findMimeType (TPath.GetExtension (file_name)));
    fileuri := JParcelable (TJNet_Uri.JavaClass.fromFile
      (TJFile.JavaClass.init (StringToJString (file_name))));
    an_intent.putExtra (TJIntent.JavaClass.EXTRA_STREAM, fileuri);
    SharedActivity.startActivity (TJIntent.JavaClass.createChooser
      (an_intent, StrToJCharSequence ('Share With')));
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
    ShellExecute (0, 'open', PChar (file_name), nil, nil, SW_SHOWNORMAL);
  {$ENDIF}
end;

procedure TForm1.cmdShareClick(Sender: TObject);
var
    file_name : string;
    a_file : TextFile;
begin
    file_name := System.IOUtils.TPath.GetTempPath +
        System.IOUtils.TPath.DirectorySeparatorChar + 'text_file.txt';

    // open a file for writing
    AssignFile (a_file, file_name);
    ReWrite (a_file);

    // write to a file
    WriteLn (a_file, 'share a text file on a mobile device');

    // close the file
    CloseFile (a_file);

    ShareFile (file_name);
end;

end.


Kaynak : Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Dostum incelemiştim bu linki ama işime yarayacağını anlayamamıştım Smile teşekkür ederim

(07-10-2019, Saat: 17:47)caoster Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,

Aşağıdaki kodda image harici dosyaların paylaşılabilirliği sağlanmış fakat Android ve Windows tarafında. iOS ile ilgili bir talebiniz varsa biraz araştırmak gerekiyor. 

unit share_text;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
  FMX.Graphics, FMX.Dialogs, System.IOUtils, FMX.StdCtrls

  {$IFDEF Android}
  , Androidapi.JNI.Os
  , Androidapi.JNI.GraphicsContentViewText
  , Androidapi.JNI.JavaTypes
  , Androidapi.Helpers
  , Androidapi.JNI.Net
  , Androidapi.JNI.Webkit
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
  , ShellApi
  , Windows
  {$ENDIF}

  ;

type
  TForm1 = class(TForm)
    cmdShare: TButton;
    procedure cmdShareClick(Sender: TObject);
    procedure ShareFile (file_name: string);
  private
    { Private declarations }
    {$IFDEF Android}
      an_intent: JIntent;
      function findMimeType (file_extension : string) : JString;
    {$ENDIF}

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

{$IFDEF Android}
function TForm1.findMimeType (file_extension : string) : JString;
begin
    file_extension := StringReplace (file_extension, '.', '', []);
    result := TJMimeTypeMap.JavaClass.getSingleton.getMimeTypeFromExtension
        (StringToJString (file_extension));
end;
{$ENDIF}

procedure TForm1.ShareFile (file_name: string);
  {$IFDEF Android}
  var
      fileuri: JParcelable;
  {$ENDIF}
begin
  {$IFDEF Android}
    an_intent := TJIntent.Create;
    an_intent.setAction (TJIntent.JavaClass.ACTION_SEND);
    an_intent.setType (findMimeType (TPath.GetExtension (file_name)));
    fileuri := JParcelable (TJNet_Uri.JavaClass.fromFile
      (TJFile.JavaClass.init (StringToJString (file_name))));
    an_intent.putExtra (TJIntent.JavaClass.EXTRA_STREAM, fileuri);
    SharedActivity.startActivity (TJIntent.JavaClass.createChooser
      (an_intent, StrToJCharSequence ('Share With')));
  {$ENDIF}
  {$IF DEFINED (MSWINDOWS)}
    ShellExecute (0, 'open', PChar (file_name), nil, nil, SW_SHOWNORMAL);
  {$ENDIF}
end;

procedure TForm1.cmdShareClick(Sender: TObject);
var
    file_name : string;
    a_file : TextFile;
begin
    file_name := System.IOUtils.TPath.GetTempPath +
        System.IOUtils.TPath.DirectorySeparatorChar + 'text_file.txt';

    // open a file for writing
    AssignFile (a_file, file_name);
    ReWrite (a_file);

    // write to a file
    WriteLn (a_file, 'share a text file on a mobile device');

    // close the file
    CloseFile (a_file);

    ShareFile (file_name);
end;

end.


Kaynak : Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Dostum incelemiştim bu linki ama işime yarayacağını anlayamamıştım Smile teşekkür ederim
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Portable program mümkün mü CesuR 1 322 28-01-2019, Saat: 14:22
Son Yorum: mcuyan
  Delphi - FireMonkey İçin Genymotion Kullanmak Mümkün mü? Ya da Alternatif Var Mı? İbrahim 0 2.262 19-09-2016, Saat: 00:21
Son Yorum: İbrahim



Konuyu Okuyanlar: 1 Ziyaretçi