2009-11-20 24 views
5

Tôi đang tìm cách xây dựng thành phần của riêng mình và không biết bắt đầu từ đâu. Tôi có một số cuốn sách Delphi nhưng chúng cũ và lỗi thời, và tôi đang tìm kiếm một số khuyến nghị về hướng dẫn/sách để giúp tôi làm điều này. Thành phần sẽ khá đơn giản, về cơ bản là 2 nhãn và một hình ảnh. Tôi cần hàng trăm trong số này trong một mảng, vì vậy tôi nghĩ rằng một thành phần sẽ là con đường tốt nhất. Các văn bản sẽ điều chỉnh dựa trên chiều rộng vv, và có một số sự kiện mouseover. Vì vậy, về cơ bản, tôi bắt đầu từ đâu?Tôi nên bắt đầu từ đâu khi xây dựng một thành phần?

Tôi đang sử dụng Delphi 2009, đây sẽ là ứng dụng win32.

Cảm ơn!

Trả lời

1

Hãy xem this article, mô tả cách xây dựng các thành phần mới được tạo thành từ một nhóm thành phần hiện có.

+0

Không theo liên kết, nhưng nó có mô tả câu trả lời của tôi không? :-) –

5

Theo như tôi biết, Delphi Component Design, của Danny Thorpe, vẫn là cuốn sách hay nhất về chủ đề này. Thiết kế thành phần đã không thay đổi đáng kể trong 15 năm qua, vì vậy bất kỳ cuốn sách nào bạn có thể không phải là lỗi thời như bạn nghĩ. Có ba điều cần lưu ý khi đọc tài liệu cũ hơn:

  1. Tên của một số đơn vị đã thay đổi. Không có DsgnIDE nữa, ví dụ. Đó là DesignIDE để thay thế.

  2. Mã thời gian thiết kế được tách biệt hoàn toàn với mã thời gian chạy ngay bây giờ. Điều này có nghĩa là bạn không thể sử dụng DesignIDE trong đơn vị thành phần của bạn, nếu không bạn sẽ bị cấm sử dụng các gói thời gian chạy. Các phiên bản Delphi cũ hơn không có hạn chế kỹ thuật này (mặc dù nó luôn luôn là một hạn chế pháp lý), vì vậy các ví dụ mã cũ bạn tìm thấy có thể cần phải thay đổi một chút.

  3. Chuỗi là Unicode ngay bây giờ, như với tất cả các ví dụ mã cũ bạn tìm thấy, có thể có một số giả định không hợp lệ về kích thước ký tự mà bạn cần phải nhận ra.

Trở ngại lớn nhất đối với các thành phần văn bản là bạn đang dự kiến ​​sẽ sử dụng khác nhau bảo vệ các thành viên của lớp bạn xuống từ, nhưng những người thường xuyên không được ghi nhận, vì vậy bạn sẽ có được nhiều hơn nữa sẵn sàng đọc mã nguồn VCL để biết các ví dụ về cách sử dụng các phương thức khác nhau.

+0

@Rob: Đề xuất tốt.Cuốn sách của Ray Konopka "Phát triển các thành phần Delphi tùy chỉnh" cũng tốt; Tôi không có URL và không thể kiểm tra Amazon từ đây (vấn đề proxy). IIRC, ai đó đã đề cập đến việc anh ấy đang xem xét phát hành lại thông qua PDF hoặc Lulu ... –

+0

@Rob: Nếu bạn biết nơi tôi có thể mua cuốn sách này, tôi sẽ rất biết ơn. Tôi đã thử @ Amazon, nhưng không may mắn. Vì vậy, bất cứ ai? – Mihaela

+0

Mihaela, liên kết trong câu trả lời của tôi đi đến Amazon, và nó nói có bảy bản sao được sử dụng. Nếu bạn không thể lấy nó ở đó, hãy thử các nhà cung cấp sách cũ khác. –

3

Cách dễ nhất để làm những gì bạn muốn là tạo biểu mẫu mới. Thả nhãn và hình ảnh và sắp xếp chúng theo cách bạn muốn; nếu nó phù hợp với nhu cầu của bạn, hãy đặt chúng trên một bảng điều khiển để chúng có thể được di chuyển xung quanh như một đơn vị.

Chọn tất cả các thành phần bạn muốn đưa vào (và bao gồm bảng nếu bạn chọn sử dụng), sau đó bấm mục Thành phần trên menu chính của IDE và chọn "Tạo mẫu thành phần". (Nó chỉ được kích hoạt nếu bạn đã chọn các thành phần trên biểu mẫu hiện tại.) Một hộp thoại sẽ xuất hiện yêu cầu bạn đặt tên cho thành phần mới và trang Component Palette mà bạn muốn nó xuất hiện.

+0

+1 cho giải pháp dễ dàng hơn nhiều và một giải pháp mà tôi đã quên. – skamradt

6

Bạn có thể đặt mua sách của Ray Konopka Dev. Custom Delphi 3 Components - PDF với giá 25 đô la. Đó là một cuốn sách chuyên ngành về chủ đề này và rất tốt cho một người mới bắt đầu quá.

Các nguyên tắc chính đằng sau các thành phần đang phát triển là:

  1. Liệu thành phần là hình ảnh hay không (Liệu nó cần một Canvas để vẽ trên)

  2. Liệu nó cần một tay cầm cửa sổ hay không (trực quan hoặc không trực quan)

Khi bạn trả lời các câu hỏi này, bạn có thể xem mã nguồn của Delphi để biết ví dụ.

+0

+1 cho điều này - đó là một cuốn sách tuyệt vời. – robsoft

+0

+1 sách hay nhất tôi đã tìm thấy về chủ đề. Đừng để Delphi 3 trong tiêu đề scare bạn, nó vẫn còn rất relavant cho bất kỳ phiên bản của Delphi. Hy vọng một ngày nào đó Ray sẽ có thời gian để cập nhật nó. –

1

Đừng lo lắng về sách của bạn đã cũ.

Chỉ cần về mọi thứ từ những ngày cũ vẫn hoạt động tốt và những gì ít thường không do xung đột tên hoặc bổ sung Unicode trong phiên bản 2009.

Họ không phải là Microsoft, họ không phá vỡ mã cũ mà không có lý do chính đáng. Trong thực tế, lấy một số mã từ các ngày DOS cũ - giả sử nó không cố gắng thao tác với màn hình nó có khả năng chạy với sửa chữa tối thiểu.

0

Đừng lo lắng về những cuốn sách cũ của bạn! Vì v3, Delphi không thay đổi nhiều. Đây là lý do tại sao hầu hết các chương trình được biên dịch với D3 vẫn biên dịch trong D7 hoặc thậm chí là các phiên bản mới hơn. Và nếu nó không biên dịch, có lẽ bạn cần phải thay đổi một hoặc hai dòng, ở đây và sau đó.

Tôi khuyên bạn nên tìm kiếm các thành phần RẤT đơn giản khác trên Internet và xem chúng được tạo ra như thế nào. Sau đó tạo của riêng bạn và đăng nó ở đây. Hãy để người khác nhìn vào nó và đề xuất cải tiến hoặc phát hiện lỗi.

Về của kiểm soát của bạn thiết kế:

1) có lẽ bạn KHÔNG cần có hai nhãn đó. Bạn chỉ có thể vẽ văn bản trực tiếp trên hình ảnh. Nếu bạn có nhiều thành phần như bạn nói, bạn có thể tiết kiệm một chút bộ nhớ.

2) bạn có thể KHÔNG muốn có rất nhiều và rất nhiều hình ảnh tải trong một biểu mẫu. Chi phí có thể là đáng kể. Những gì bạn có thể làm là để tải hình ảnh CHỈ trong hình ảnh có thể nhìn thấy trên màn hình - và bạn sẽ đặt trên màn hình CHỈ 5-10 hình ảnh (hoặc bất kỳ số lượng hình ảnh bạn có thể hiển thị trên biểu mẫu mà không đi ra khỏi màn hình). Khi người dùng cuộn xuống, bạn giữ cùng một điều khiển TImage trên màn hình nhưng bạn tải hình ảnh mới (tiếp theo) trong đó.

3) Bạn có thể không muốn lưu trữ nhãn và TImage trong một mảng (Tôi cho rằng đó là một TImage vì có vẻ như bạn muốn hiển thị chúng trên màn hình khác bạn sẽ không cần nhãn - bạn cần giải thích sự cố của mình chi tiết hơn nếu tôi hiểu sai). Nhưng bạn có thể lưu trữ một TBitmap và văn bản (mà bạn muốn hiển thị trong nhãn) để thay thế.

Vì vậy, bạn có thể cần phải tính toán bao nhiêu CPU/đĩa trên đầu của bạn hàng trăm điều khiển sẽ tạo ra và bao nhiêu bộ nhớ mà họ cần. Nếu bạn ở mức dưới 1 GB và thời gian tải xuống dưới 10 giây thì điều đó tương đối ổn. NẾU không, bạn có thể muốn suy nghĩ về thiết kế của kiểm soát của bạn trước khi bắt đầu thực sự thực hiện nó.

Hy vọng điều này hữu ích. Xem ya.

Các vấn đề liên quan