![]() |
|
FMX excel kayıt - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: FMX excel kayıt (/showthread.php?tid=7284) |
FMX excel kayıt - guvenlik - 29-04-2023 iyi geceler beyler android için bir sayım proğramı yazdım StringGrid de liste halinde duruyor. bunu excel dosyasına yazdırmak istiyorum. comobj FMX mimarisinde çalışmıyor sanırım bununla ilgili bir örnekle karşılaşmadım. birkaç makale buldum fakat hiç tatmin edici birşeyler değildi. VCL de comobj çalışıyor lakin FMX mimarisinde çalışmam diyor. FMX de çalışan bir kod örneği varmı. FMX excel kayıt - mcuyan - 29-04-2023 https://doc.tmssoftware.com/grid-excel-bridge/fmx/guides/user-guide.html TMSnin bir çözümü var ... incelediniz mi? Ayrıca cdata nında varmış.. https://www.cdata.com/drivers/excel/firedac/ Cvp: FMX excel kayıt - hi_selamlar - 29-04-2023 (29-04-2023, Saat: 01:46)guvenlik Adlı Kullanıcıdan Alıntı: iyi geceler beyler android için bir sayım proğramı yazdım StringGrid de liste halinde duruyor. bunu excel dosyasına yazdırmak istiyorum. comobj FMX mimarisinde çalışmıyor sanırım bununla ilgili bir örnekle karşılaşmadım. birkaç makale buldum fakat hiç tatmin edici birşeyler değildi. VCL de comobj çalışıyor lakin FMX mimarisinde çalışmam diyor. FMX de çalışan bir kod örneği varmı. Merhabalar, Alternatif olarak CSV şeklinde kayıt edebilrsiniz. Kolay gelsin. FMX excel kayıt - mrmarman - 30-04-2023 Formatsız içerik yeterli ise CSV güzel bir çözümdür HTML rapor da üretmek alternatif olabilir. Ek olarak eğer raporunuz çok komplex bir yapı değilse şunu bir deneyebilirsiniz. 1. Excel'de örnek bir şablon hazırlayın. 2. Bunu xlsx olarak kaydedin 3. WinRar ile bu dosyayı açıp içindeki klasörleri gözlemleyelim. Örnek veri girişiniz bir xml tablosu gibi diye hatırlıyorum. Bir ara çok sayıdaki xlsx içinden metin arama için incelemiştim. 4. Format, hücre adresleme vb. nasıl oluşmuş ona benzeri bir yapı üretip yeniden paketleyip excel ile açmayı deneyin. Bu şekilde Excel XLSX dosyasını elle üretebilirsiniz belki. Bir çare denemeye değer. Hatta bir parser sınıf bile yazılabilir. Bir de CSV mantığından yola çıkıp direkt XML formatlı hücreli tablo hazırlayıp Excel import olayı var bkz. bu Stackoverflow link Github araması da yapın mutlaka birisi buna bir el atmıştır. FMX excel kayıt - 3ddark - 30-04-2023 Bir ara aşağıdaki kütüphaneyi fmx için derleyecek şekilde düzenledim ve Windows fmx de kullanmıştım. Mobil test etme fırsatım olmadı. Fakat Excel bağımlılığı yok https://github.com/Avemey/zexmlss Sürekli fmx excel işiniz varsa çözüm olabilir. FMX excel kayıt - guvenlik - 30-04-2023 Hepinizden Allah razı olsun çok teşekkürler hepiniz ayrı ayrı önerilerde bulunmuşsunuz elleriniz dert görmesin. ben basit bir tablo sırano barkod 1 123 2 456 3 123 şeklinde olacak mrmarman hocamın ki daha mantıklı bir iş gibi geldi bana bu konuda ufak bir örnek bulabilsem çok olayı daha iyi kavraya biliriz sanırım. birde şöyle bir koda ulaştım vcl de çalışacaktır ama telefonda bir izin felan istiyor sanırım. var file_name : string; a_file : TextFile; begin file_name := '/storage/emulated/0/Download/' + '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); end; I/O Error 13 hatası alıyorum. FMX excel kayıt - mustafaozpinar - 01-05-2023 Selamlar, Kodda hata yok, sanırım file_name için verilen Path yanlış. Path'i doğrudan yazmak yerine Delphi kütüphane değişkenlerini kullanırsanız bu tür hatalardan kaçınmış olursunuz. Uses System.IOUtils ; ... begin file_name := TPath.GetDownloadsPath; ... end. FMX excel kayıt - guvenlik - 02-05-2023 Arkadaşlar hepinize teşekkür ederim sorunu çözdüm inşallah buarayada nasıl ve ne şikilde yaptığımı atacağım hatta dosyayı atacağım FMX excel kayıt - guvenlik - 04-05-2023 Buyrun arkadaşlar delphi 10.3 rio da çalışıyor. bir ilham olurdiye buraya iz bıraktım. unit Unit1;
interface
uses
{$if CompilerVersion = 33}
// Delphi RIO
System.Permissions, // hata veren satır
{$endif}
FMX.DialogService,
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.Edit, System.Rtti, FMX.Grid.Style, FMX.Grid,
FMX.ScrollBox, FMX.StdCtrls, FMX.Ani, FMX.Memo, REST.Backend.EMSServices,
FireDAC.Stan.Intf, FireDAC.Comp.BatchMove, FireDAC.Comp.BatchMove.JSON,
REST.Backend.EMSFireDAC, FireDAC.Stan.Option, FireDAC.Stan.Error,
FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.Phys, FireDAC.FMXUI.Wait, Data.DB,
FireDAC.Comp.Client, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
FireDAC.DApt, FireDAC.Comp.DataSet, Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc;
type
TForm1 = class(TForm)
FloatAnimation1: TFloatAnimation;
FloatKeyAnimation1: TFloatKeyAnimation;
Panel1: TPanel;
FloatAnimation2: TFloatAnimation;
FloatAnimation3: TFloatAnimation;
FloatKeyAnimation2: TFloatKeyAnimation;
Panel2: TPanel;
Edit1: TEdit;
Panel3: TPanel;
Button1: TButton;
Panel4: TPanel;
EKLE: TButton;
Panel5: TPanel;
Grid1: TStringGrid;
StringColumn1: TStringColumn;
StringColumn2: TStringColumn;
StringColumn3: TStringColumn;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
procedure Grid1SelectCell(Sender: TObject; const ACol, ARow: Integer;
var CanSelect: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
okuma_izni:String;
yazma_izni:String;
Procedure Sonuc_Kontrol_et(Sender: TObject; Const APermissions:TArray<String>; Const AGrantResults: TArray<TPermissionStatus>);
Procedure Izin_Gerekcesi(Sender: TObject; Const APermissions:TArray<String>; Const APostRationaleProc:TProc);
public
{ Public declarations }
end;
var
Form1: TForm1;
row,col:Integer;
fwit:Integer;
implementation
uses
{$IFDEF ANDROID}
Androidapi.Helpers,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.Os,
{$ENDIF} System.IOUtils;
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}
{$R *.Windows.fmx MSWINDOWS}
{$R *.NmXhdpiPh.fmx ANDROID}
function bugun():String;
var
TarihZaman : TDateTime;
simdi:String;
Begin
TarihZaman:=Now;
simdi:=DateTimeToStr(TarihZaman); // 15/03/2003 19:10:24 Yazar
simdi:=StringReplace(simdi, '.', '', [rfReplaceAll, rfIgnoreCase]);
simdi:=StringReplace(simdi, ' ', '', [rfReplaceAll, rfIgnoreCase]);
simdi:=StringReplace(simdi, ':', '', [rfReplaceAll, rfIgnoreCase]);
result:=simdi;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
file_name : string;
a_file : TextFile;
say : Integer;
d,t:String;
begin
file_name := TPath.GetSharedPicturesPath + '/'+bugun+'.csv';
// open a file for writing
AssignFile (a_file, file_name);
ReWrite (a_file);
// write to a file
for Say := 0 to Grid1.RowCount do
Begin
if Grid1.Cells[2,Say]<>'' then
WriteLn (a_file, Grid1.Cells[2,Say]+',1');
End;
// close the file
CloseFile (a_file);
Grid1.SelectCell(0,Grid1.RowCount);
for Say := 0 to Grid1.RowCount do
Begin
if Grid1.Cells[2,Say]<>'' then
Begin
Grid1.Cells[0,row]:='';
Grid1.Cells[1,row]:='';
Grid1.Cells[2,row]:='';
End;
End;
row:=0;
Grid1.RowCount:=row;
Grid1.SelectCell(0,row);
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if key=vkReturn then
begin
Grid1.Cells[0,row]:=inttostr(row+1);
Grid1.Cells[1,row]:='Sil';
Grid1.Cells[2,row]:=Edit1.Text;
row:=row+1;
//showmessage(inttostr(row));
Edit1.Text:='';
Grid1.RowCount:=row+1;
Grid1.SelectCell(0,row);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
{$IF DEFINED(ANDROID)}
okuma_izni:=JStringToString (TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
yazma_izni:=JStringToString (TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
{$ENDIF}
{$IF DEFINED(ANDROID)}
PermissionsService.RequestPermissions([okuma_izni,yazma_izni],Sonuc_Kontrol_et, Izin_Gerekcesi);
{$ENDIF}
fwit:=form1.Width;
//ShowMessage(inttostr(fwit));
row:=0;
Grid1.Columns[0].Width:= round(fwit*0.11);
Grid1.Columns[1].Width:= round(fwit*0.28);
grid1.Columns[2].Width:= round(fwit*0.50);
end;
procedure TForm1.Grid1SelectCell(Sender: TObject; const ACol, ARow: Integer;
var CanSelect: Boolean);
begin
if ACol=1 then
Begin
Grid1.Cells[0,ARow]:='';
Grid1.Cells[1,ARow]:='';
Grid1.Cells[2,ARow]:='';
End;
end;
procedure TForm1.Izin_Gerekcesi(Sender: TObject; const APermissions: TArray<String>;
const APostRationaleProc: TProc);
Var
I:Integer;
KulMes:String;
begin
for I := 0 to High(APermissions) do
Begin
if APermissions[I]=okuma_izni then
KulMes:=KulMes+'Verileri Okumak ve Kaydetmek için dahili hafızaya erişim izni';
if APermissions[I]=yazma_izni then
KulMes:=KulMes+'Verileri Okumak ve Kaydetmek için dahili hafızaya erişim izni';
TDialogService.ShowMessage(KulMes,
Procedure(Const AResult:TModalResult)
Begin
APostRationaleProc;
End
);
End;
end;
procedure TForm1.Sonuc_Kontrol_et(Sender: TObject; const APermissions: TArray<String>;
const AGrantResults: TArray<TPermissionStatus>);
begin
if (length(AGrantResults)=2) and
(AGrantResults[0]= TPermissionStatus.Granted) and
(AGrantResults[1]= TPermissionStatus.Granted) then
begin
end
else
Begin
TDialogService.ShowMessage('işlem olmadı');
End;
end;
end.
|