2012-05-31 30 views
8

Tôi cố gắng cung cấp cho người dùng giao diện 'sạch sẽ và đơn giản' bằng cách ẩn một số thành phần. Chỉ một mũi tên nhỏ biểu thị rằng anh ta có thể mở rộng một số phần của thanh trình đơn chính. Khi tất cả được đóng lại nó trông như thế này:Tại sao việc chia tỷ lệ các điều khiển khác nhau giữa PC?

enter image description here

Khi bạn mở tất cả nó trông như thế này:

enter image description here

Mỗi mũi tên là một SpeedButton thats ngồi ở phía bên trái của một bảng điều khiển . Bằng cách nhấp vào nút, Chiều rộng được chuyển đổi giữa chiều rộng của Speedbutton (đóng) và chiều rộng của bảng điều khiển tại thời điểm thiết kế (mở). Chiều rộng của bảng điều khiển tại designtime được lưu trữ như là một hằng số. Các show_hide_controls thủ tục xử lý này:

procedure TCompose_Main.show_hide_controls (key: string; Button: TSpeedButton; Panel: TPanel; width: Int32); 
begin 
    if GPA.iKey [key] = 1 
     then Panel.Width := width   // show panel, set panel to design width 
     else Panel.Width := Button.Width; // hide panel, set with to button width 
    Button.Glyph.Assign (nil); 
    Images_Left_Right.GetBitmap (GPA.iKey [key], Button.Glyph); 
end; // show_hide_controls // 

thói quen này được gọi như sau:

show_hide_controls ('Show Play Controls', // index to panel to show/hide 
        Enlarge_Play,   // Speedbutton requesting the enlargement/hide 
        Panel_Play,   // Panel to show/hide 
        cPlayWidth);   // Width of panel when shown 

Bây giờ nhiều người dùng báo cáo rằng một phần của bảng điều khiển là ẩn, như:

enter image description here

Có vẻ như hệ điều hành (Windows 7) đóng một số thủ thuật với việc mở rộng quy mô. Tôi không thể sao chép lỗi này. Có ai hiểu điều gì đang xảy ra ở đây không? Và có cách nào gọn gàng để lập trình chống lại điều này theo cách độc lập không?

Cập nhật Vì GDF đã chỉ ra đúng trong câu trả lời của mình, nó phải làm với việc mở rộng phông chữ (bảng điều khiển> Hiển thị). Điều này hoạt động hơi lạ trên máy tính của tôi. Thay đổi nó thành 150% có tác động nhỏ trong khi thay đổi nó thành 125% có tác động lớn. Như bạn có thể đã đoán tôi đã thử nghiệm đầu tiên và không phải là quy mô thứ hai. Chỉ khi một người sử dụng báo cáo rằng quy mô trở lại từ 125% đến 100% tôi có thể tái tạo lỗi của mình trên máy tính của tôi.

Tôi không thể tìm thấy mối quan hệ giữa phông chữ và những rắc rối mà tôi có như đã được đề xuất bởi một số người theo dõi. Hệ thống của tôi vẫn đang chịu đựng tất cả các thử nghiệm tôi đã làm với Courier (không phải mới), Segoe UI, Tahoma và MS Sans Serif :-D. Có thể gián tiếp bởi vì các điều khiển có thể được thay đổi kích cỡ để chứa văn bản.

Làm cách nào để xử lý việc này? Tôi không biết, tôi sẽ bắt đầu thử nghiệm và sẽ cho bạn biết nếu tôi tìm thấy một cái gì đó.

Cảm ơn tất cả vì sự giúp đỡ của bạn!

+0

Ir thực sự có vẻ rằng kích thước phông chữ là yếu tố chính, bởi vì các điều khiển không có văn bản liên kết với chúng (ví dụ như các nút hình ảnh bên trái) dường như không bị ảnh hưởng. Tôi khuyên bạn nên sử dụng thuộc tính "Neo" của các bảng để giữ khoảng cách tương đối của chúng ở bên trái, vì vậy bạn có thể giảm thiểu tác động trực quan. – jfoliveira

+0

@Jeferson - Tôi đã thử với các kích thước phông chữ khác nhau và không thể sao chép vấn đề. Tam giác màu vàng không có văn bản nhưng biến mất. – Arnold

+0

+1 và Star, vấn đề này được phát tán rộng rãi trong phát triển Delphi của chúng ta và cần được biết đến với bất kỳ ai muốn xây dựng một GUI thực sự tương thích trong Delphi. –

Trả lời

10

Nếu vấn đề của bạn là những gì tôi tin, bạn vừa nêu câu trả lời. Windows 7 phát với mở rộng các phông chữ nhất định. Khi bạn cài đặt Win7 trên PC, nó sẽ kiểm tra kích thước màn hình của bạn và đặt cài đặt tỷ lệ "mặc định" là 100% hoặc 125% tùy thuộc vào kích thước màn hình của bạn. Vấn đề là tại thời điểm này, nó sẽ cài đặt các tệp phông chữ vào máy tính. Nó sử dụng một tập tin phông chữ khác nhau "mặc định" cho một số phông chữ.

Tôi đoán là ứng dụng của bạn đang sử dụng MS Sans Serif ... đây là một trong các phông chữ có cài đặt tệp phông chữ khác nhau tùy thuộc vào quy mô mà Win7 đang sử dụng làm (mặc định).

Để xác minh điều này, người dùng của bạn cho bạn biết muốn đặt tỷ lệ làm mặc định, bạn có thể xem điều này bằng cách nhấp chuột phải vào màn hình và chọn "cá nhân hóa" rồi "Hiển thị" ở dưới cùng bên trái.

Các liên kết sau đây cho thấy bạn làm thế nào để thay đổi các tập tin trong sử dụng-font trở lại với bản gốc http://www.rlvision.com/misc/windows_7_font_bug.asp

Tuy nhiên, tôi sẽ làm cho một nỗ lực để có được tắt của chữ này và cập nhật các yếu tố bố trí để làm việc như mong muốn trên Win7 cũng như hệ điều hành qua

Đây là những gì tôi nghĩ rằng bạn đang đối phó với trao số lượng hạn chế của thông tin mà bạn đã cung cấp ...

cập nhật vì bạn nhắc nhở tôi khi y ou đã đề cập đến những cái nhìn khác nhau giữa 125% v 150%. Tôi chỉ muốn đảm bảo rằng bạn đã biết rằng hai tệp MS Sans Serif khác nhau trông đẹp hơn ở các thang đo khác nhau. Một trong các tệp phông chữ trông tuyệt vời ở mức 100% và 150% nhưng đáng kinh ngạc là 125%. Các tập tin phông chữ khác sẽ tuyệt vời ở mức 125%, nhưng khủng khiếp ở mức 100 và 150%.

Tôi hoàn toàn không nhớ được file font là mà, nhưng tôi biết 2 thủ phạm là 1) SSERIFF.FON 2) SSERIFE.FON

+0

Cảm ơn bạn. Tôi sẽ thử điều này và trở lại với bạn. – Arnold

+0

GDF: Phông chữ mặc định nào nên được sử dụng? –

+1

@WarrenP: Tahoma, Verdana, Giao diện người dùng Segoe, bất kỳ thứ gì, bất kỳ phông chữ vector Kiểu True nào (có thể mở rộng mà không có "bước"). Thậm chí tốt hơn: luôn luôn sử dụng phông chữ mặc định của hệ điều hành (chưa được MS Sans Serif kể từ khi ... oh, tôi không thể nhớ, Win 3.1?) –

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