OSDN Git Service

なやみながらですね。
[newbbs/newbbs.git] / tool / Unit2.pas
index 4c1364c..03a2a3e 100644 (file)
@@ -33,11 +33,7 @@ type
     LinkPropertyToFieldCaption: TLinkPropertyToField;
     LinkControlToField2: TLinkControlToField;
     FDGUIxWaitCursor1: TFDGUIxWaitCursor;
-    DBNavigator1: TDBNavigator;
     DBGrid1: TDBGrid;
-    FDTable1ID: TIntegerField;
-    FDTable1NAME: TWideStringField;
-    FDTable1SOURCE: TBlobField;
     Button4: TButton;
     FDQuery1: TFDQuery;
     Memo1: TMemo;
@@ -68,6 +64,9 @@ type
     FDTable3dbnum: TIntegerField;
     FDTable3database: TWideStringField;
     DataSource1: TDataSource;
+    FDTable1id: TIntegerField;
+    FDTable1name: TWideStringField;
+    FDTable1source: TWideMemoField;
     procedure Button1Click(Sender: TObject);
     procedure Button4Click(Sender: TObject);
     procedure Button3Click(Sender: TObject);
@@ -88,6 +87,7 @@ type
     procedure combo;
     procedure list;
     procedure itemsCopy;
+    procedure openPicture(mem: TStream; filename: string);
   public
     { Public \90é\8c¾ }
   end;
@@ -104,49 +104,49 @@ uses System.NetEncoding, IdHashSHA, IdHashMessageDigest, Jpeg;
 procedure TForm1.Button1Click(Sender: TObject);
 var
   i: Integer;
-  t, t2: TStream;
-  jpg: TJpegImage;
+  s, s2: string;
+  t: TMemoryStream;
 begin
-  with FDTable1 do
-  begin
-    t2 := TMemoryStream.Create;
-    jpg := TJpegImage.Create;
-    for i := 1 to 10 do
+  if OpenPictureDialog1.Execute = true then
+    with FDTable1 do
     begin
-      t := TResourceStream.Create(HInstance, 'Resource_' + i.ToString,
-        RT_RCDATA);
-      jpg.LoadFromStream(t);
-      AppendRecord([i, Format('slide%d.jpg', [i])]);
-      Edit;
-      t2:=FDTable1.CreateBlobStream(FDTable1.FieldByName('source'),bmWrite);
-      jpg.SaveToStream(t2);
-      Post;
+      t := TMemoryStream.Create;
+      i:=RecordCount+1;
+      for s2 in OpenPictureDialog1.Files do
+      begin
+        openPicture(t, s2);
+        s := TNetEncoding.Base64.EncodeBytesToString(t.Memory, t.Size);
+        AppendRecord([i, Format('slide%d.jpg', [i]), s]);
+        inc(i);
+      end;
       t.Free;
-      t2.Free;
+      Refresh;
     end;
-    t2.Free;
-    jpg.Free;
-    ApplyUpdates;
-    CommitUpdates;
-  end;
 end;
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
-  FDQuery1.ExecSQL('drop table kainushi.images;');
+  if FDTable1.Exists = true then
+    FDQuery1.ExecSQL('drop table images;');
   FDQuery1.ExecSQL;
 end;
 
 procedure TForm1.Button3Click(Sender: TObject);
 var
-  s: TStream;
+  s: TMemoryStream;
+  p: TBytes;
   j: TJpegImage;
 begin
-  s := FDTable1.CreateBlobStream(FDTable1.FieldByName('source'), bmRead);
+  if (FDTable1.Bof = true) or (FDTable1.Eof = true) then
+    Exit;
+  p := TNetEncoding.Base64.DecodeStringToBytes(FDTable1.FieldByName('source')
+    .AsString);
   j := TJpegImage.Create;
+  s := TMemoryStream.Create;
+  s.WriteBuffer(p, Length(p));
+  s.Position := 0;
   j.LoadFromStream(s);
   Canvas.Draw(0, 0, j);
-  s.Free;
   j.Free;
 end;
 
@@ -156,9 +156,7 @@ begin
   begin
     while not((Bof = true) and (Eof = true)) do
       Delete;
-    ApplyUpdates;
-    Reconcile;
-    CommitUpdates;
+    Refresh;
   end;
 end;
 
@@ -344,6 +342,27 @@ begin
   item := ListBox1.ItemIndex;
 end;
 
+procedure TForm1.openPicture(mem: TStream; filename: string);
+var
+  jpg: TJpegImage;
+  bmp: TBitmap;
+begin
+  jpg := TJpegImage.Create;
+  bmp := TBitmap.Create;
+  try
+    jpg.LoadFromFile(filename);
+    bmp.Height := 465;
+    bmp.Width := Trunc(465 * jpg.Width / jpg.Height);
+    bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, 465), jpg);
+    jpg.Assign(bmp);
+    jpg.SaveToStream(mem);
+    mem.Position := 0;
+  finally
+    jpg.Free;
+    bmp.Free;
+  end;
+end;
+
 procedure TForm1.SpeedButton1Click(Sender: TObject);
 var
   s: string;