Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разместить курсор на середине компонента, Делаю как обычно, а не выходит?! 
V
    Опции темы
ALeXandrK
  Дата 9.8.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Я рисую сначала картинку, а потом ставлю на нее курсор, но получается ерунда...

Рисование картинки:
Код

...
var
     MovingCell:TImage;
...
  MovingCell := TImage.Create(nil);
...
 with MovingCell do
    begin
        Parent := grdTimeTable;  // Картинку хочу разместить посередине TStringGrid
        Width  := grdTimeTable.ColWidths[ACol];         // ------- Размером с ячейку
        Height := grdTimeTable.RowHeights[ARow];    //----------------------------------
        Top := grdTimeTable.Top+(grdTimeTable.Height div 2);  // Координаты местоположения картинки
        Left := grdTimeTable.Left+(grdTimeTable.Width div 2);  // -----------------------------------------------------
      //Устанавливаем курсор на середину
        SetCurCenter(MovingCell);
      //Рисуем
        Canvas.Brush.Color := clBlack;
        Canvas.FillRect(ClientRect);
    end;


Устанавливаем курсор на картинку:
Код

procedure SetCurCenter(Control:TImage);
var point:TPoint;// Для установки координат мыши
begin
  with Control do
  begin
    point.X:=Width div 2;
    point.Y:=Height div 2;
    point := Control.ClientToScreen(point);
  end;
  SetCursorPos(point.x, point.y);
end;


Что самое интересное:
  •  Если запускать все в этом виде, то курсор устанавливается на середину grdTimeTable, 
     а картинка рисуется не там, где ей положено;
  •  Если убрать выполнение проседуры SetCurCenter, то картинка рисуется где нужно,
     ну а курсор, понятное дело, где стоял там и стоит.
У меня Delphi 2007 без Update. 

Где же я напортачил, люди добрые ???smile 

Это сообщение отредактировал(а) ALeXandrK - 9.8.2007, 21:57


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Telepyz
Дата 9.8.2007, 22:20 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 9.7.2007

Репутация: 1
Всего: 1



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    grdTimeTable: TStringGrid;
    SpeedButton1: TSpeedButton;
    Image1: TImage;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SetCurCenter(Control:TImage);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.SetCurCenter(Control:TImage);
var point:TPoint;// Äëÿ óñòàíîâêè êîîðäèíàò ìûøè
begin
  with Control do
  begin
    point.X:=Width div 2;
    point.Y:=Height div 2;
    point := Control.ClientToScreen(point);
  end;
  SetCursorPos(point.x, point.y);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var MovingCell:TImage;
begin
  MovingCell := TImage.Create(nil);
 with MovingCell do
    begin
        Parent := grdTimeTable;  // Êàðòèíêó õî÷ó ðàçìåñòèòü ïîñåðåäèíå TStringGrid
        Width  := grdTimeTable.ColWidths[5];         // ------- Ðàçìåðîì ñ ÿ÷åéêó
        Height := grdTimeTable.RowHeights[5];    //----------------------------------
        Top := grdTimeTable.Top+(grdTimeTable.Height div 2);  // Êîîðäèíàòû ìåñòîïîëîæåíèÿ êàðòèíêè
        Left := grdTimeTable.Left+(grdTimeTable.Width div 2);  // -----------------------------------------------------
      //Óñòàíàâëèâàåì êóðñîð íà ñåðåäèíó
        SetCurCenter(MovingCell);
      //Ðèñóåì
        Canvas.Brush.Color := clBlack;
        Canvas.FillRect(ClientRect);
    end;
end;

end.



Все работает

P.S. у меня Delphi 7
--------------------
обновить драйвер
PM MAIL   Вверх
Sanchezzz
  Дата 9.8.2007, 22:43 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



у меня тоже пашет просто 
сделай его в приват.
Код

private
procedure SetCurCenter(Control:TImage);
...
procedure Tform1.SetCurCenter(Control:TImage);
var point:TPoint;// Для установки координат мыши
begin
  with Control do
  begin
    point.X:=Width div 2;
    point.Y:=Height div 2;
    point := Control.ClientToScreen(point);
  end;
  SetCursorPos(point.x, point.y);
end;



Это сообщение отредактировал(а) Sanchezzz - 9.8.2007, 22:44


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
ALeXandrK
  Дата 9.8.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Sanchezzz:
Цитата

у меня тоже пашет просто 
сделай его в приват


Да у меня этот метод вообще в одтельный модуль вынесен.

Смех да и только ... создал другое приложение (тестовое) тоже 
туда это все запихнул - работает...
Значит проблема где-то в другом мести smile 

Нашел это место, теперь дело за малым smile  разабраться что за нафиг smile 

Спасибо ребята за отзывчивость smile 

Это сообщение отредактировал(а) ALeXandrK - 9.8.2007, 23:22


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.