2012-05-07 26 views
5

Screen ShotTại sao lỗi này tiếp tục làm rối tung thanh công cụ IDE2 của XE2?

enter image description here

Mã nguồn sau đây được sử dụng để tạo ra các lỗi trên. Tất cả những gì bạn phải làm là biên dịch chương trình và đảm bảo rằng IDE vẫn đang chạy (lỗi KHÔNG xảy ra nếu IDE bị đóng), nhấp vào nút 12 đến 15 lần và lỗi sẽ bật lên.

Khi lỗi đã xảy ra, hãy chuyển về IDE, tất cả các thanh công cụ cho IDE sau đó đã biến mất. Bạn phải tắt IDE và chạy lại, để chúng xuất hiện trở lại. Màn hình

Source Code

unit MainUnit; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, Winapi.ShlObj, System.SysUtils, 
    System.Variants, System.Classes, System.StrUtils, Vcl.Graphics, 
    Vcl.Controls, Vcl.Forms, Vcl.StdCtrls; 

type 
    TMainFrm = class(TForm) 
    Button1: TButton; 
    procedure FormCreate(Sender: TObject); 
    procedure Button1Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    MainFrm: TMainFrm; 
    hDesktop: HWND; 

implementation 

{$R *.dfm} 

function GetHandle(theHandle: HWND; NotUsed: NativeInt): LongBool; stdcall; 
begin 
    if (theHandle <> 0) then 
    begin 
    hDesktop := FindWindowEx(FindWindowEx(theHandle, 0, 'SHELLDLL_DefView', 
     nil), 0, 'SysListView32', nil); 
    end; 
    Result := (hDesktop = 0); 
end; 

procedure TMainFrm.FormCreate(Sender: TObject); 
var 
    lpss: TShellState; 
begin 
    ZeroMemory(@lpss, SizeOf(lpss)); 
    try 
    SHGetSetSettings(lpss, SSF_HIDEICONS, False); 
    finally 
    Button1.Caption := IfThen(lpss.fHideIcons, 'Show Icons', 'Hide Icons'); 
    end; 
    EnumWindows(@GetHandle, 0); 
    Button1.Enabled := (hDesktop <> 0); 
end; 

procedure TMainFrm.Button1Click(Sender: TObject); 
const 
    nCmdShow: array [Boolean] of NativeInt = (SW_HIDE, SW_SHOW); 
var 
    lpss: TShellState; 
begin 
    ZeroMemory(@lpss, SizeOf(lpss)); 
    try 
    SHGetSetSettings(lpss, SSF_HIDEICONS, False); 
    ShowWindow(hDesktop, nCmdShow[lpss.fHideIcons]); 

    lpss.fHideIcons := (not BOOL(lpss.fHideIcons)); 
    Button1.Caption := IfThen(lpss.fHideIcons, 'Show Icons', 'Hide Icons'); 
    finally 
    SHGetSetSettings(lpss, SSF_HIDEICONS, True); 
    end; 
end; 

end. 

Application Shot

enter image description here

Bất kỳ trợ giúp sẽ được đánh giá rất nhiều.

CẬP NHẬT

Các thanh công cụ IDE không còn biến mất, và lỗi không xuất hiện nữa, nhờ TOndrej cho các thông tin về tắt "Profiler thanh công cụ". Bây giờ tôi nhận được một nhấp nháy rất khó chịu mà đôi khi mất 10 đến 15 giây để trở lại bình thường.

+0

Tôi đề nghị bạn thử XE Delphi, nếu bạn có thể, nó trông ổn định hơn. – none

Trả lời

5

Bạn đã cài đặt AQTime chưa? Vấn đề dường như biến mất nếu bạn chỉ cần ẩn thanh công cụ Profiler.

+0

Tôi đoán nó sẽ không liên quan đến AQTime. Tôi không có nó nhưng tất cả các thanh công cụ trên tất cả các cửa sổ (không chỉ Delphi IDE) nhấp nháy khi các biểu tượng đang được hiển thị hoặc ẩn trên máy tính của tôi. Tuy nhiên tôi đã không nhận được lỗi * Một cuộc gọi đến một chức năng OS không thành công *. – TLama

+0

@TLama nhấp nháy không liên quan, lỗi có thể là; có thể lặp lại mỗi khi thanh công cụ Profiler được hiển thị, không thể tái tạo khi bị ẩn. –

+0

Tôi đã không mong đợi nhấp nháy. Và bạn có +1 của tôi bởi vì nó chỉ xác nhận lý thuyết của bạn vì tôi không cài đặt AQTime ;-) – TLama

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