1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Фокусы на форме

Тема в разделе "Delphi - программирование", создана пользователем GOsha, 21 янв 2005.

Статус темы:
Закрыта.
  1. GOsha

    GOsha Гость

    Репутация:
    0
    Есть форма... Ее нужно закрыть, как только она становится неактивной. Но есть маленькая проблема.... КАК???
    И как проверить, есть ли курсор в поле Memo.
    Пасиба...
     
  2. zubr

    zubr Гость

    Репутация:
    0
    Можно создать поток проверяющий, является ли окно программы самым верхним:
    Код:
    unit Unit1;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;
    
    type
    TLeasenThread=class(TThread)
    private
     Fhw:cardinal;
    protected
     Procedure Execute; override;
     procedure CompareHw;
    end;
    
    TForm1 = class(TForm)
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
    private
     { Private declarations }
    public
     { Public declarations }
    
    end;
    
    var
    Form1: TForm1;
    
    implementation
    
    {$R *.DFM}
    
    var
    lsn:TLeasenThread;
    
    Procedure TLeasenThread.Execute;
    begin
    repeat
    Fhw:=GetForegroundWindow;
    Synchronize(CompareHw);
    Sleep(1);
    until False;
    end;
    
    procedure TLeasenThread.CompareHw;
    begin
    If Form1.Handle<>Fhw then
    begin
    Form1.Close;
    abort;
    end;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    lsn:=TLeasenThread.Create(False);
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    lsn:=nil;
    end;
    
    end.
    Юзай функцию API GetCursorPos
     
  3. ????

    ???? Гость

    Репутация:
    0
    Если приложение состоит из одной формы, то
    Если есть несколько форм, и надо закрывать при смене активной формы, то
    примеров для Delphi нет - могу дать для С++ Builder.

    З.Ы. Может тебе пару ebook'ов подкинуть? Ты ведь из Бреста? Если надо - через ПМ.
     
  4. GOsha

    GOsha Гость

    Репутация:
    0
    Я сейчас в Минске... Учусь, так-сказать... Я просто PHP-программер.. А Делфу увидел первый раз в универе...
    Но как-то слабовато у меня с визуальным программированием. Я знаю что надо, но как... Кидай, если не трудно... БУду только благодарен.
    А если в Минске, то можно было бы и увидется. Если тебе не трудно.
    ОНо как-то срабатывает, как только сворачивается, но не когда фокус теряется... Мне нужно, как только фокус с формы пропадает, а не форма сворачивалась...
    НАсколько знаю, синтаксис не сильно отличется... Есть различия, но не такие координальные.
     
  5. ????

    ???? Гость

    Репутация:
    0
    GOsha
    Хорошо, что не остался в Бресте (БГТУ) учиться - знания дают на 3- (ооо...ооочень поверхностные), а проблем создают больше чем надо.
    Ребята устраивают сходки в Минске - с ними можешь встретиться (З.Ы. Давно не собирались.)

    Ну держи код для BCB:
    файл unit1.cpp:
    Код:
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     Application->OnDeactivate = AppDeactivate;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::AppDeactivate(TObject *Sender)
    {
    //  ShowMessage("Потеряли фокус!");
     Application->Terminate();
    }
    //---------------------------------------------------------------------------
    При создании формы указываем, что при событии OnDeactivate нашего приложения следует вызывать метод AppDeactivate, который является методом класса формы и описан ниже:
    файл unit1.h:
    Код:
    //---------------------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
     void __fastcall FormCreate(TObject *Sender);
    private:	// User declarations
     void __fastcall AppDeactivate(TObject *Sender);
    public: // User declarations
     __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
     
  6. GOsha

    GOsha Гость

    Репутация:
    0
    Пасиба...
    А де и када?
    И чапаму давно не собирались? -Непорядок!
     
  7. ????

    ???? Гость

    Репутация:
    0
  8. GOsha

    GOsha Гость

    Репутация:
    0
    Я бы с радостью, тока вот у меня девушка приезжает... Так что мне придется несладко... ТОчнее сладко.. И часу не буде.
    Лана... пошел оффтоп. Я все понял...
    ВСЕМ СПАСИБО!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей