DELPHI và ứng dụng viết cho excel (1 người xem)

  • Thread starter Thread starter geotech
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

geotech

Thành viên mới
Tham gia
24/6/06
Bài viết
29
Được thích
16
Bài viết này sẽ giới thiệu về Delphi và những ứng dụng viết cho Excel (word, ppt...)
Có lẽ nhiều bạn còn chưa biết đến ngôn ngữ LT DELPHI, đây chính là Object Pascal, tức là pascal hướng đối tượng. Hầu như các bạn đã được nghe hoặc học qua pascal. Object Pascal là ngôn ngữ hướng đối tượng mạnh, kế thừa những ưu điểm của Pascal, chặt chẽ cú pháp, trong sáng. Bạn đã bao giờ nghe Kỹ sư trưởng của Delphi là người thiết kế C# chưa?
Hiện nay có nhiều hãng phát triển ứng dụng cho Excel bằng Delphi và các thư viện lập trình delphi cho excel nữa. Mình sẽ giới thiệu dần dần với các bạn. Mình gửi kèm ứng dụng viết cho excel và word. Các bạn download về cài đặt, chú ý trong quá trình cài đặt tắt các ứng dụng của Office nhé.
 
Delphi đã một thời phát triển ở Việt Nam, nó đã là đối thủ của VB6 và VC++. Khi quả bom .NET của Microsoft tung ra với unicode thì nhiều người đã chuyển sang .NET. Nhưng giờ với Delphi 2009 & C++ Builder 2009 hỗ trợ unicode và nhiều thứ khác nữa thì có lẽ thời gian tới cộng đồng người Việt sẽ dùng nhiều Delphi. Delphi hiện thịnh hành ở các nước như: Nga, Pháp, TQ, Nhật.

Các bạn xem qua giao diện của Delphi 2009 nha

Delphi2009ScreenShot.JPG


Với Delphi2009, các bạn có thể xây dựng một ứng dụng độc lập, nhúng với hỗ trợ Unicode, đặc biệt có nhiều sản phẩm mã nguồn mở, bản thân các controls của Delphi cũng là mã mở vì vậy bạn tha hồ chỉnh sửa theo ý mình, và học tập được khá nhều từ chính Delphi.

Các bạn có thể tìm hiểu thêm thông tin từ:
http://www.codegear.com/

http://en.wikipedia.org/wiki/Borland_Delphi
The chief architect behind Delphi was Anders Hejlsberg
 
Lần chỉnh sửa cuối:
Upvote 0
Chào TuanVNUNI
Hình như bạn cũng tham gia bên diendantinhoc cũng với nick này nhỉ
Quả thật Delphi rất mạnh mẽ, phát triển ứng dụng với W32 hoặc .Net đều hay
Mình mới lập trình delphi được một năm nay, quả thật rất hay
chúc vui
 
Upvote 0
Chào TuanVNUNI
Hình như bạn cũng tham gia bên diendantinhoc cũng với nick này nhỉ
Quả thật Delphi rất mạnh mẽ, phát triển ứng dụng với W32 hoặc .Net đều hay
Mình mới lập trình delphi được một năm nay, quả thật rất hay
chúc vui

Mình có tham gia một số diễn đàn, trong đó có diendantinhoc. Bạn cứ post bài đi, anh em cùng học tập.
 
Upvote 0
Mình cũng xin chia sẻ thêm những địa chỉ cung cấp các tài liệu và controls của Delphi.

Để học từ cơ bản đến nâng cao
http://delphi.about.com/

Lập trình trong Delphi để làm việc với các ứng dụng bên ngoài như Office, AutoCad,... cần hiểu về lập trình COM, Automation
http://delphi.about.com/od/comoleactivex/OLE_COM_DCOM_Automation_ActiveX_Delphi_knowledge_base.htm

Để viết Com Add-in cho Excel có thể tham khảo đồ ở trang này:
http://www.add-in-express.com/add-in-delphi/

Các controls miễn phí có theme kiểu Office mã nguồn mở
http://club.telepolis.com/silverpointdev/sptbxlib/downloads.htm

Controls làm việc với CSDL mã nguồn mở
http://zeos.firmos.at/portal.php

Bộ controls mã nguồn mở rất nổi tiếng của soft-gems
http://www.soft-gems.net/index.php?option=com_content&task=view&id=12&Itemid=38

Những đồ có giá đây:
http://www.devexpress.com/
http://www.tmssoftware.com/site/
http://www.raize.com/DevTools/Products.asp

Liệt kê một số phần mềm viết bằng Delphi
http://delphi.wikia.com/wiki/Good_Quality_Applications_Built_With_Delphi
 
Upvote 0
Cho một cái ví dụ thì hay biết mấy.
 
Upvote 0
Đúng đó nếu có một ví dụ thể anh em mới mở mày mở mặt được bởi cũng chưa biết anh đó là thế nào.
 
Upvote 0
Upvote 0
Mình post một ví dụ về tạo Office Addin bằng Delphi: add in cho word, excel và outlook, khi đăng ký nó sẽ tạo toolbar gồm tên, địa chỉ số điện thoại, chẳng hạn excel bạn nhập rồi click ok nó sẽ chèn tên , địa chỉ , số diện thoại bắt đầu từ cells hiện hành
http://www.4shared.com/file/64900185/fda4ea99/MS_Office_2000_Delphi_sample.html
cụ thể cách tạo add in, các bạn hãy đọc readme trong thư mục này nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã xem anh Tuân "biểu diễn" với Delphi và thấy khá thú vị với giao diện rất đẹp. Delphi kết nối với Office không dễ dàng như đối với con đẻ VB nhưng có lợi thế về giao diện, dung lượng cài đặt. Bây giờ tôi vẫn đang chơi vơi giữa VB2008 và Delphi????. VB2008 có hạn chế với Framework với dung lượng khá lớn nhưng tôi nghĩ đó xu hướng tương lai của Window.
 
Upvote 0
Tôi đã xem anh Tuân "biểu diễn" với Delphi và thấy khá thú vị với giao diện rất đẹp. Delphi kết nối với Office không dễ dàng như đối với con đẻ VB nhưng có lợi thế về giao diện, dung lượng cài đặt. Bây giờ tôi vẫn đang chơi vơi giữa VB2008 và Delphi????. VB2008 có hạn chế với Framework với dung lượng khá lớn nhưng tôi nghĩ đó xu hướng tương lai của Window.

VS2010 sắp ra. Có lẽ nên sài món đó hiệu quả hơn nhiều. :P

Nói vậy thôi, Hướng mà vào componentsource.com thì sẽ thấy đồ phát triển trên .NET mạnh như vũ bão. Hãy theo khuynh hướng mà làm (nếu bắt đầu từ đầu). Giờ các máy đa số cài .NET Framework rồi. Các hệ điều hành sắp tới sẽ luôn sẵn có nền tảng đó.
 
Upvote 0
VS2010 sắp ra. Có lẽ nên sài món đó hiệu quả hơn nhiều. :P

Nói vậy thôi, Hướng mà vào componentsource.com thì sẽ thấy đồ phát triển trên .NET mạnh như vũ bão. Hãy theo khuynh hướng mà làm (nếu bắt đầu từ đầu). Giờ các máy đa số cài .NET Framework rồi. Các hệ điều hành sắp tới sẽ luôn sẵn có nền tảng đó.

Cứ đánh đu theo công nghệ thì "chính quả" thế nào được hả bác Hải :-=. Em sẽ cố gắng từ VB2008 là ổn thôi, mênh mông quá.
 
Upvote 0
VS2010 sắp ra. Có lẽ nên sài món đó hiệu quả hơn nhiều. :P

Nói vậy thôi, Hướng mà vào componentsource.com thì sẽ thấy đồ phát triển trên .NET mạnh như vũ bão. Hãy theo khuynh hướng mà làm (nếu bắt đầu từ đầu). Giờ các máy đa số cài .NET Framework rồi. Các hệ điều hành sắp tới sẽ luôn sẵn có nền tảng đó.

Em đọc ở đâu đó một câu nói của người đồng sáng lập Google rằng để thành thạo một ngôn ngữ cần ít nhất 10 năm, chưa kể những yếu tố khác. Vả lại phát triển ứng dụng theo hướng ứng dụng công việc thì quả là dài để bắt đầu. Theo em nghĩ hướng phát triển RAD- rapid application development như Delphi hay freepascal (Lazarus) vẫn được cộng đồng ưa chuộng, nhất là ở các quốc gia đang phát triển.
 
Upvote 0
Em đọc ở đâu đó một câu nói của người đồng sáng lập Google rằng để thành thạo một ngôn ngữ cần ít nhất 10 năm, chưa kể những yếu tố khác. Vả lại phát triển ứng dụng theo hướng ứng dụng công việc thì quả là dài để bắt đầu. Theo em nghĩ hướng phát triển RAD- rapid application development như Delphi hay freepascal (Lazarus) vẫn được cộng đồng ưa chuộng, nhất là ở các quốc gia đang phát triển.

Trời, thế đọc đoạn trên mà ko hiểu cái emotion :P mà mình viết à?

Mình luôn luôn nói: Chạy theo công nghệ thì chưa chắc đã chạy kịp (cái này nói nhiều lắm trên diễn đàn rồi). Thế nên ở trên mình viết là ... chờ tới VS 2010 chứ ko phải VS 2008 mà (mà đến 2010 thì kiểu gì cũng sẽ lại có 2015 Beta :)).

Đối với mình, quan trọng nhất ko phải sử dụng ngôn ngữ lập trình gì đâu, mà phải "tinh" về một món nào đó mới là quan trọng. Mình vẫn đang kính nể 1 ứng dụng kế toán trên Access của 1 công ty ở MỸ vì tầm SP đó hiện ở VN chưa có cái nào theo kịp (chưa kể tới SP viết trên .NET của họ)

Hôm vừa rồi có 1 vài bạn SV nói có đề tài này nọ khá "hoành tráng" trên .NET. Xong khi mình giới thiệu về cách lập trình ở 1 ngôn ngữ "cực kỳ lạc hậu" thì họ nói là sao những gì anh nói, anh làm khác xa với bọn em học thế, thầy giáo dạy .NET của bọn em dạy viết khác cơ (hầu như ko có khái niệm ứng dụng theo kiến trúc) :P
 
Lần chỉnh sửa cuối:
Upvote 0
Redirect console- gọi ứng dụng console

Mình cần gọi một ứng dụng console (.exe trong dos) vào chương trình của mình, ứng dụng console này khi chạy đòi hỏi nhập tên file số liệu, tuỳ chọn in ấn, và file kết quả. Để gọi ứng dụng console từ chương trình của mình lên thì kô vấn đề. Tuy nhiên mình muốn chạy ứng dụng console này ẩn, và truyền tham số cho nó (Thay vì chạy nó rồi nhập file input, nhập tuỳ chọn...), mình vẫn chưa làm được. Nhờ các bạn chỉ giùm
xin cám ơn.

Mình code bằng delphi 6.
 
Upvote 0
Upvote 0
Cám ơn anh Tuân
Mục đích của em là cần chuyển tất cả các input thành tham số dòng lệnh từ file dạng text chứa tham số nhập vào bisect.exe như sau (cụ thể anh xem hình vẽ đi kèm):
Y
0 10 --> Input endpoints A<B
0.001 ->input tolerance
1000 -->Input maximum number of tolerance
2 --->Select output destination 2.têxtfil
output.txt --> input filename output
1 -->Select answer of output 1. Answer only

Sau đó chỉ cần capture output, ở đây là file output.txt
(Chương trình Bisect.exe để giải phương trình bậc 3, chỉ là ví dụ thôi, chứ nếu giải pt bậc 3 code trên delphi khỏe hơn nhiều)

Ngoài ra theo em biết còn cách giả lập user input (mouse, keyboard) để điều khiển ứng dụng trong console nữa, nhưng hiện tại em chưa nghiên cứu cái này.
 

File đính kèm

  • hoi a tuan.jpg
    hoi a tuan.jpg
    24.7 KB · Đọc: 94
Upvote 0
Theo như Peter Johnson- http://www.delphidabbler.com/index
trả lời (nguyên văn):


Officially, PJCOnsoleApp.pas does not work with Delphis earlier than Delphi 7.

The fatal error message is not helpful because it doesn't tell us what's wrong. I have tracked it down to the fact the unit uses DateUtils.

A DateUtils routine is used in

fElapsedTime := Int64Rec(DateUtils.MilliSecondsBetween(StartTime, Now)).Lo;

in the TPJCustomConsoleApp.MonitorProcess method.

If you can find a method to find the number of milliseconds between two ellapsed times then you can replaced that call and it should work.

If you find a solution please send it to me and I'll include it in the program as a conditional compile for Delphi 6.

Dịch theo (bản quyền) vdict.com:
Chính thức, PJCOnsoleApp.pas không làm việc với Delphis sớm hơn Delphi 7.


Trong thông báo lỗi trên không hữu ích bởi vì nó không cho chúng tôi biết những gì sai. Tôi đã theo dõi nó xuống đến thực tế, các đơn vị sử dụng DateUtils.

DateUtils thường được sử dụng trong

fElapsedTime: = Int64Rec (DateUtils.MilliSecondsBetween (startTime, now)).Lo;

trong TPJCustomConsoleApp.MonitorProcess method.

Nếu bạn có thể tìm thấy một phương pháp để tìm số mili giây giữa hai lần ellapsed sau đó bạn có thể thay thế mà gọi và nó sẽ làm việc.

Nếu bạn tìm thấy một giải pháp xin vui lòng gửi cho tôi và tôi sẽ bao gồm nó trong chương trình như là một điều kiện biên soạn cho Delphi 6.

----
Vấn đề này khá khó, bác nào tìm ra phương án, post lên anh em tham khảo với.
 
Upvote 0
Mình download add-in express về toàn đòi key mới dùng đuợc.
Bác nào có keyg@n của pm này thì cho mình xin với.
 
Upvote 0
Em có đọc ở Topic nào đó mà Bác Tuân có cho Link tải Delphi2009 rồi mà quên ở đâu rồi, mong Bác Tuân và Mọi người biêt thì cho em với!!!!
 
Upvote 0
Cách đây khoảng một năm có một website Delphivn.net của Việt Nam, mình cũng hay đăng ví dụ Delphi trên đó nhưng trang đó nay đã mất rồi. Nếu bạn nào muốn tìm hiểu Delphi alo, khi nào chúng ta sẽ trao đổi biết thêm. Delphi là ngôn ngữ mạnh, càn thiệp sâu vào hệ thống. Các sản phẩm mình viết phần lớn là bằng Delphi.
 
Upvote 0
Dạ em nhớ có đọc cũng trên GPE mà bác, gồm có tới 9 hoặc 10 Part gì đó. Mong Bác Cho lại!!!!
 
Upvote 0
Em có tải trên Google Delphi2010 nhưng nó dẫn tới trang nào đó rồi dính Virus tùm lum luôn. Phải Reset lại Windows. Mong Bác Tuân cho link, để em mày mò Delphi.!!!!!!
 
Upvote 0
Delphi lập trình dễ như VB, C++ Builder thì khó hơn. Cái IDE/Compiler này trang bị 1 đống control, chỉ gắp ra xài. :D
 
Upvote 0
Tạm thời mọi người xem trực tiếp hoặc download video clip này nhé!

Giới thiệu về tính năng mới của Delphi 2009
http://video.codegear.com/Tiburon/WhatsNewInTheVCL_English/WhatsNewInTheVCL_English.html
Download

Cách tạo Add-in cho Office bằng add-in-express
http://www.add-in-express.com/add-in-delphi/video.php

http://www.add-in-express.com/add-in-delphi/excel-task-panes.php

Cái này sử dụng sao anh. em chạy nó báo lỗi
" the project cannot be loaded because the required personality Delphi.personality is no Available..."
 
Lần chỉnh sửa cuối:
Upvote 0
Em có làm theo hướng dẫn tạo được cái TaskPnel bằng Add in express Delphi rồi.
Bây giờ em muốn Add các control trên UserForm trong excel thì làm phải sao ah.
Mong các anh hướng dẫn giúp ah
z704721456051_11122061fbcc51ec95bcd17affb0d854.png
 
Upvote 0
Em có làm theo hướng dẫn tạo được cái TaskPnel bằng Add in express Delphi rồi.
Bây giờ em muốn Add các control trên UserForm trong excel thì làm phải sao ah.
Mong các anh hướng dẫn giúp ah
z704721456051_11122061fbcc51ec95bcd17affb0d854.png

Nếu em tạo TaskPane từ trong Delphi với componet Add-in Express thì form em phải dùng Form của Delphi chứ không phải Userform nhé. CÓ thể được nhưng phải lập trình API rất cao cấp.

Nếu muốn lập trình VBA có userform nhúng vào TaskPane thì dùng ControlDorOffice hoặc BSAC do anh viết tại đây:
 
Upvote 0
Em cung có sài cái BSAC của anh rồi (Very Good).
Em đang tính làm cái Task Panel nhỏ để di chuyển qua lại các WorkBook và các Sheet mà không biết trong Delphi làm sao để add vào Treeview, anh có thể hướng dẫn giúp em được không ah
Đại loại giống như thế này
PS: em bi bao lỗi undeclared identifier 'CreateOLEObject' nay là sao vậy anh Tuân
treview.png
 
Lần chỉnh sửa cuối:
Upvote 0
Ví dụ tạo TreeView trong Delphi:
1. Tạo TForm, tạo TTreeView, tên là "TreeView1"
2. Tạo một TButton, tên là "cmdCreateNodes"
Viết code vào trong sụ kiện OnClick của "cmdCreateNodes" như sau:

Mã:
procedure TForm2.cmdCreateNodesClick(Sender: TObject);
var
  Parent, Child1, Child2, Child3, Child: TTreeNode;
begin

  Parent := TreeView1.Items.Add(nil, 'Bố Mẹ');

  Child1 := TreeView1.Items.AddChild(Parent, 'Anh Cả');
  Child := TreeView1.Items.AddChild(Child1, 'Con Anh Cả 1');
  Child := TreeView1.Items.AddChild(Child1, 'Con Anh Cả 2');
  Child := TreeView1.Items.AddChild(Child1, 'Con Anh Cả 3');

  Child2 := TreeView1.Items.AddChild(Parent, 'Anh Hai');
  Child := TreeView1.Items.AddChild(Child2, 'Con Anh Hai 1');
  Child := TreeView1.Items.AddChild(Child2, 'Con Anh Hai 2');
  Child := TreeView1.Items.AddChild(Child2, 'Con Anh Hai 3');

  Child3 := TreeView1.Items.AddChild(Parent, 'Anh Anh Ba');
  Child := TreeView1.Items.AddChild(Child3, 'Con Anh Ba 1');
  Child := TreeView1.Items.AddChild(Child3, 'Con Anh Ba 2');
  Child := TreeView1.Items.AddChild(Child3, 'Con Anh Ba 3');

end;

Khi chạy ta được:
bluesofts.net-treeview-delphi.png
 
Upvote 0
Em bi bao lỗi này là sao anh.

XLApp: OleVariant;
XLApp := CreateOLEObject('Excel.Application');

undeclared identifier 'CreateOLEObject'
 
Upvote 0
Em bi bao lỗi này là sao anh.

XLApp: OleVariant;
XLApp := CreateOLEObject('Excel.Application');

undeclared identifier 'CreateOLEObject'

Em chưa khai báo Unit cho nó. Thử th
Em bi bao lỗi này là sao anh.

XLApp: OleVariant;
XLApp := CreateOLEObject('Excel.Application');

undeclared identifier 'CreateOLEObject'

Bạn chayh Delphi ở chế độ Administrator xem.
 
Upvote 0
Em mo DP o che do Admins roồi anh

Mã:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Outlook2000, adxxlFormsManager, Vcl.StdCtrls, Vcl.ComCtrls;

type
  TadxExcelTaskPane1 = class(TadxExcelTaskPane)
    Label1: TLabel;
    ComboBox1: TComboBox;
    TreeView1: TTreeView;
    Button1: TButton;
    procedure ComboBox1Change(Sender: TObject);
    
    //procedure IterateRoot;
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;

{NOTE: The adxExcelTaskPane1 variable is intended for the exclusive use
       by the TadxXlFormsCollectionItem Designer.
       NEVER use this variable for other purposes.}
var
  adxExcelTaskPane1 : TadxExcelTaskPane1;

implementation

{$R *.DFM}

procedure TadxExcelTaskPane1.Button1Click(Sender: TObject);

var
  MyTreeNode1, MyTreeNode2: TTreeNode;

  XLApp: OleVariant;
  Sheet: OleVariant;
  WorkbookNumber: Integer;
  WorkSheetNumber: Integer;
begin
  with TreeView1.Items do
  begin
    XLApp := CreateOLEObject('Excel.Application');
 for WorkbookNumber := 1 to XLApp.Workbooks.Count do begin
  end;
 
Upvote 0
Tre2.png


Cuối cùng cũng được, đó em khai báo thiệu Unit. Cám ơn anh Tuấn nhiều nhé
Bay gio em muốn mỗi lần add Workbook moi thi tu dong chay code thi làm sao anh.
và Code cho su kien Click Treeview de lấy Item
 
Lần chỉnh sửa cuối:
Upvote 0
Chương trình BSAC của a Tuân cần phải đăng ký rùi, E đang tìm hiểu mà dùng Free, sau khi bật TaskPanel lần 2 thì bị mất hết các Conman, phải di chuyển TaskPanel mới thấy lại. @thuyyeu99 có bị như thế ko
 
Upvote 0
Chương trình BSAC của a Tuân cần phải đăng ký rùi, E đang tìm hiểu mà dùng Free, sau khi bật TaskPanel lần 2 thì bị mất hết các Conman, phải di chuyển TaskPanel mới thấy lại. @thuyyeu99 có bị như thế ko
Cái đó dùng Free mà (chỉ bất tiện là chưa đăng ký thì nó hiện bảng đang ký thôi). mình chỉ dùng cái Listview thôi còn cái TaskPanel chỉ test file demo thôi. thấy hay đang nghiên cứu xem sao mà nghi bó tay quá hichic
 
Upvote 0
Chương trình BSAC của a Tuân cần phải đăng ký rùi, E đang tìm hiểu mà dùng Free, sau khi bật TaskPanel lần 2 thì bị mất hết các Conman, phải di chuyển TaskPanel mới thấy lại. @thuyyeu99 có bị như thế ko

Liên quan đễn cập nhật màn hình. Hình như bạn chạy Office 2013,2016?
BSAC là Free, chỉ là nó hiển thị bảng thông tin thôi chứ tất cả bạn dùng bình thường.
 
Upvote 0
Liên quan đễn cập nhật màn hình. Hình như bạn chạy Office 2013,2016?
BSAC là Free, chỉ là nó hiển thị bảng thông tin thôi chứ tất cả bạn dùng bình thường.
Đúng rùi ạ. E chạy office 2013. Trong file của A có rất nhìu bản Demo, và đều bị tình trạng như thế đối với TaskPanel ạ
 
Upvote 0
Cái đó dùng Free mà (chỉ bất tiện là chưa đăng ký thì nó hiện bảng đang ký thôi). mình chỉ dùng cái Listview thôi còn cái TaskPanel chỉ test file demo thôi. thấy hay đang nghiên cứu xem sao mà nghi bó tay quá hichic
Đúng rùi, nó chỉ hiện lần đầu tiên cái bảng đăng ký khi mình chạy TaskPanel thôi, Từ lần 2 mà cùng 1 file thì sẽ không hiện, nhưng lại bị mất các Comman, Control thêm vào. Phải di chuyển mới thấy được
 
Upvote 0
Có anh chị nào biết Delphi hướng dẫn giúp em với hichic
Em có khai báo biến trong unit 1; là Workbook: boolean;
Giờ qua unit 2;
Em muốn lấy giá trị của Workbook thì làm sao và em muốn chạy đoạn code trong unit 1, tu unit 2 mình phải viết làm sao

Cám ơn các anh chị quan tâm
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom