Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2009, 21:34   #1
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию [Delphi/WinAPI] SetCaretPos

Помогите разобраться, как в Дельфи использовать процедуру SetCaretPos ...
anGeee вне форума Ответить с цитированием
Старый 20.09.2009, 22:17   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
The SetCaretPos function moves the caret to the specified coordinates. If the window that owns the caret was created with the CS_OWNDC class style, then the specified coordinates are subject to the mapping mode of the device context associated with that window.

BOOL SetCaretPos(

int X, // horizontal position
int Y // vertical position
);


Parameters

X

Specifies the new x-coordinate of the caret.

Y

Specifies the new y-coordinate of the caret.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

SetCaretPos moves the caret whether or not the caret is hidden.
The caret is a shared resource; there is only one caret in the system. A window can set the caret position only if it owns the caret.
вот у себя в Делфи нашел
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.09.2009, 22:20   #3
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Ну я додумался прочитать это на МСДН точка ком )) А вот как ей пользоваться не придумал... Пытался как-то изменить положение курсора в мемо - не вышло... = (
anGeee вне форума Ответить с цитированием
Старый 20.09.2009, 22:31   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там идут абсолютнын координаты и они должны быть внутри вашего окна
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.09.2009, 23:02   #5
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Ну если я правильно понимаю значение фразы "абсолютные координаты", то по идее должно быть так :
Код:
procedure TForm1.BitBtn9Click(Sender: TObject);
var x,x1,x2 : integer;
    y,y1,y2 : integer;
begin
  x1:=Form1.Left + Memo5.Left + PageControl1.Left + TabSheet7.Left;
  x2:=x1 + Memo5.Width;
  y1:=Form1.Top + Memo5.Top + PageControl1.Top + TabSheet7.Top;
  y2:=y1 + Memo5.Height;
  x:=random(x2-x1)+x1;
  y:=random(y2-y1)+y1;
  SetCaretPos(x,y);
  SetCursorPos(x,y);
  Memo5.SetFocus;
end;
Однако ничего не меняется.. Курсор попадает в мемо, а положение каретки не меняется..

Последний раз редактировалось anGeee; 20.09.2009 в 23:05.
anGeee вне форума Ответить с цитированием
Старый 23.10.2009, 22:56   #6
WMag
Новичок
Джуниор
 
Регистрация: 23.10.2009
Сообщений: 2
По умолчанию

Просто надо абсолютные координаты получать через ClientToScreen
Код:
var
p, p2: TPoint;
x, y: integer;
begin
  p.x := Memo5.Left;
  p.y := Memo5.Top;
  p := Form1.ClientToScreen(p);
  p2.x := Memo1.Width;
  p2.y := Memo1.Height;
  p2 := Form1.ClientToScreen(p2);

  x := random(p2.X - p.X) + p.X;
  y := random(p2.Y - p.Y) + p.Y;
  SetCaretPos(x, y);
  SetCursorPos(x, y);
  Memo5.SetFocus;
end;

Последний раз редактировалось rpy3uH; 24.10.2009 в 09:38.
WMag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собственный класс диалогового окна на чистом WinApi в Delphi Iber Win Api 19 01.12.2008 15:40
WinApi и C++ titan-prog Win Api 1 17.07.2008 21:02
WinApi Necrom Помощь студентам 3 27.06.2008 14:24
winapi in delphi steck Свободное общение 2 07.09.2007 08:40
WinApi Andr Безопасность, Шифрование 3 17.06.2007 13:38