OSDN Git Service

よくわからないままです、FMXが難しいのでVCLで作成しましたが解決していません
[newbbs/newbbs.git] / tool / Unit2.pas
1 unit Unit2;
2
3 interface
4
5 uses
6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
7   System.Classes, Vcl.Graphics,
8   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
9   FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
10   FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MySQL,
11   FireDAC.Phys.MySQLDef, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
12   FireDAC.DApt, Vcl.ExtDlgs, Vcl.StdCtrls, Vcl.ExtCtrls, Data.DB,
13   FireDAC.Comp.DataSet, FireDAC.Comp.Client, System.Rtti,
14   System.Bindings.Outputs, Vcl.Bind.Editors, Data.Bind.EngExt,
15   Vcl.Bind.DBEngExt, Data.Bind.Components, Data.Bind.DBScope,
16   FireDAC.VCLUI.Wait, FireDAC.Comp.UI, Vcl.DBCtrls, Jpeg, Vcl.Grids, Vcl.DBGrids;
17
18 type
19   TForm1 = class(TForm)
20     FDConnection1: TFDConnection;
21     FDTable1: TFDTable;
22     Button1: TButton;
23     Button2: TButton;
24     Button3: TButton;
25     Image1: TImage;
26     Edit1: TEdit;
27     Label1: TLabel;
28     OpenPictureDialog1: TOpenPictureDialog;
29     BindSourceDB1: TBindSourceDB;
30     BindingsList1: TBindingsList;
31     LinkPropertyToFieldCaption: TLinkPropertyToField;
32     LinkControlToField2: TLinkControlToField;
33     FDGUIxWaitCursor1: TFDGUIxWaitCursor;
34     DBNavigator1: TDBNavigator;
35     DataSource1: TDataSource;
36     FDQuery1: TFDQuery;
37     DBGrid1: TDBGrid;
38     procedure Button1Click(Sender: TObject);
39     procedure FormCreate(Sender: TObject);
40     procedure FormDestroy(Sender: TObject);
41     procedure Button2Click(Sender: TObject);
42     procedure Button3Click(Sender: TObject);
43   private
44     { Private \90é\8c¾ }
45     img: TJpegImage;
46     procedure streamToField(stream: TStream);
47     procedure filenameToField(filename: string);
48   public
49     { Public \90é\8c¾ }
50   end;
51
52 var
53   Form1: TForm1;
54
55 implementation
56
57 {$R *.dfm}
58
59 procedure TForm1.Button1Click(Sender: TObject);
60 var
61   i: Integer;
62   s, t: TStream;
63 begin
64   FDTable1.CachedUpdates := true;
65   for i := 1 to 10 do
66   begin
67     t := TResourceStream.Create(HInstance, 'Resource_' + i.ToString, RT_RCDATA);
68     s := FDTable1.CreateBlobStream(FDTable1.FieldByName('source'),bmWrite);
69     FDTable1.Append;
70     FDTable1.Edit;
71     FDTable1.FieldByName('id').AsInteger:=i;
72     FDTable1.FieldByName('name').AsString:= Format('slide%d.jpg', [i]);
73     img.LoadFromStream(t);
74     img.SaveToStream(s);
75     FDTable1.Post;
76     t.Free;
77     s.Free;
78   end;
79   FDTable1.ApplyUpdates;
80   FDTable1.CommitUpdates;
81   FDTable1.CachedUpdates := false;
82 end;
83
84 procedure TForm1.Button2Click(Sender: TObject);
85 begin
86   if OpenPictureDialog1.Execute = true then
87     filenameToField(OpenPictureDialog1.FileName);
88 end;
89
90 procedure TForm1.Button3Click(Sender: TObject);
91 var
92   s: TStream;
93 begin
94   s:=FDTable1.CreateBlobStream(FDTable1.FieldByName('source'),bmRead);
95   try
96     img.LoadFromStream(s);
97     Image1.Picture.Assign(img);
98     img.CleanupInstance;
99   finally
100     s.Free;
101   end;
102 end;
103
104 procedure TForm1.filenameToField(filename: string);
105 var
106   field: TStream;
107 begin
108   FDTable1.Edit;
109   field:=FDTable1.CreateBlobStream(FDTable1.FieldByName('source'),bmWrite);
110   try
111     img.LoadFromFile(filename);
112     img.SaveToStream(field);
113     FDTable1.Post;
114     img.CleanupInstance;
115   finally
116     field.Free;
117   end;
118 end;
119
120 procedure TForm1.FormCreate(Sender: TObject);
121 begin
122   FDQuery1.ExecSQL;
123   FDTable1.Open;
124   img := TJpegImage.Create;
125 end;
126
127 procedure TForm1.FormDestroy(Sender: TObject);
128 begin
129   img.Free;
130 end;
131
132 procedure TForm1.streamToField(stream: TStream);
133 var
134   field: TStream;
135 begin
136   FDTable1.Edit;
137   field := FDTable1.CreateBlobStream(FDTable1.FieldByName('source'), bmWrite);
138   try
139     img.LoadFromStream(stream);
140     img.SaveToStream(field);
141     FDTable1.Post;
142     img.CleanupInstance;
143   finally
144     field.Free;
145   end;
146 end;
147
148 end.