Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

api   Найти похожие ветки 

 
Eraser ©   (2006-04-24 19:05) [40]


> Жаннка   (24.04.06 18:55) [39]

всмысле "пишется"? с какого перепугу туда должно что то писаться? )
что находится в edit"e и что возвращается в st?
PS попробуй SendMessage(hndl, WM_GETTEXT, Integer(PChar(st[1])), 255);


 
Жаннка   (2006-04-24 19:12) [41]


> всмысле "пишется"? с какого перепугу туда должно что то
> писаться? )
> что находится в edit"e и что возвращается в st?

в эдите который находиться в другом приложении
в том эдите и строки типа "Отчет" и проста числа "52.000"
а в st - БеА


 
Eraser ©   (2006-04-24 19:15) [42]


> Жаннка   (24.04.06 18:55) [39]

упс.. эт я параметры местами перепутал... :(
короче вот как я сделал

procedure TForm1.Button1Click(Sender: TObject);
const
 MAX_SIZE = 255;
var
 hWindow, hParentWindow: THandle;
 buf: PChar;
begin
 hParentWindow := FindWindow(nil, "Калькулятор");
 if hParentWindow = 0 then
   Exit;
 hWindow := FindWindowEx(hParentWindow, 0, "Edit", nil);
 if hWindow = 0 then
   Exit;
 buf := nil;
 try
   GetMem(buf, MAX_SIZE);
   SendMessage(hWindow, WM_GETTEXT, MAX_SIZE, Integer(buf));
   ShowMessage(buf);
 finally
   if buf <> nil then
     FreeMem(buf);
 end;
end;


 
Жаннка   (2006-04-24 19:22) [43]

работает,но только на калькуляторе....меняю на Tform1 или на другое и все...


 
Жаннка   (2006-04-24 19:27) [44]

во,поняла...спасибо за такую помощь!


 
Eraser ©   (2006-04-24 19:27) [45]


> Жаннка   (24.04.06 19:22) [43]

какое название класса или заголовок у окна, на котором edit"ы и названия класса edit"ов?


 
Жаннка   (2006-04-24 19:34) [46]

Заголовок Form2
Class TDBEdit

если на форме один эдит то все номан,а если их многа как тогда?не задавать  же текст в
hWindow := FindWindowEx(hParentWindow, 0, "tdbedit","текст");


 
sniknik ©   (2006-04-24 20:44) [47]

> не задавать  же текст в
> hWindow := FindWindowEx(hParentWindow, 0, "tdbedit","текст");
вместо нуля подставляй хендл найденного "чилда" поиск будет от него к следующему по очереди.


 
balepa ©   (2006-04-25 06:00) [48]


> Eraser ©   (24.04.06 14:46) [10]


Это и имелось ввиду.


 
Жаннка   (2006-04-25 07:45) [49]


> вместо нуля подставляй хендл найденного "чилда" поиск будет
> от него к следующему по очереди.
>

не поняла как это будет выглядеть,
hWindow := FindWindowEx(hParentWindow, 0, "tdbedit","текст"); - это же и есь чилд


 
balepa ©   (2006-04-25 07:56) [50]

procedure TForm1.Button1Click(Sender: TObject);
var
 S:PChar;
 mHWND: HWND;
begin
 S:="Server"#0;
 mHWND:= FindWindow("TForm1","Form1");
 if mHWND<>0 then
     SendMessage(GetWindow(mHWND,GW_CHILD),WM_SETTEXT,0,LongInt(S));
 else
 begin
   MessageBox(Form1.Handle,"Window not found","Message",16);
 end;
end;


 
Жаннка   (2006-04-25 23:38) [51]

я чего то не пойму уже,вот код который выводит текст последнего эдита:
const
MAX_SIZE = 255;
var
hWindow, hParentWindow: THandle;
buf: PChar;
begin
hParentWindow := FindWindow(nil, "Form2");
if hParentWindow = 0 then
  Exit;
hWindow := FindWindowEx(hParentWindow,0, "tdbedit",nil);
if hWindow = 0 then
  Exit;
buf := nil;
try
  GetMem(buf, MAX_SIZE);
  SendMessage(hWindow, WM_GETTEXT, MAX_SIZE, Integer(buf));
edit1.Text:=buf;
finally
  if buf <> nil then
    FreeMem(buf);
end;

А это что? WM_SETTEXT не пойму
SendMessage(GetWindow(mHWND,GW_CHILD),WM_SETTEXT,0,LongInt(S));


 
balepa ©   (2006-04-26 10:22) [52]


> Жаннка   (25.04.06 23:38) [51]

Ну неужели догадаться было трудно ?
WM_SETTEXT это SETTEXT - "Установить текст"


> balepa ©   (25.04.06 07:56) [50]

Это про "чилд" было.


 
Жаннка   (2006-04-26 12:17) [53]

дык я поняла что это установить,мне то надо получить, а не установить


 
balepa ©   (2006-04-26 12:40) [54]


> Жаннка   (26.04.06 12:17) [53]


ДЫК WM_GETTEXT

У тебя ж вроде уже получилось ?


 
Жаннка   (2006-04-26 13:28) [55]

получилось,но пролема в том,что если на форме другого приложения не один edit,то я получаю текст ИЗ ПОСЛЕДНЕГО едита,а мне нужно из конкретного


 
balepa ©   (2006-04-26 13:50) [56]

А програмка в которой эдиты тобою писана ?


 
Жаннка   (2006-04-26 13:59) [57]

да,мной,но это для того чтоб научиться,дальше надо будет из базы данных нашей фирмы


 
balepa ©   (2006-04-26 14:09) [58]


> Жаннка   (26.04.06 13:59) [57]


Так из базы или с эдитов ?


 
Жаннка   (2006-04-26 14:11) [59]

пока из эдитов


 
balepa ©   (2006-04-26 14:35) [60]

В приложении с эдитами сделай хотя бы свой обработчик собственных сообщений.


 
Жаннка   (2006-04-26 14:38) [61]

хм...а если это не мое приложение,тогда как


 
balepa ©   (2006-04-26 14:42) [62]

Разберитесь сначала откуда надо брать информацию в конечном итоге.


 
Жаннка   (2006-04-26 14:44) [63]

есть приложение, на нем 6 эдитов,вот из них надо вытащить текст


 
balepa ©   (2006-04-26 14:52) [64]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/enumchildwindows.asp

Посмотри может это то что нужно.


 
Жаннка   (2006-04-27 16:01) [65]

то наверно,но разобраться не могу :(
вот пробую такой текст
var
Hndl,h: THandle;
st: string;
begin
SetLength(st, 255);
FillChar(st[1],255,0);
h:=FindWindow(nil,"Form2");
Hndl:= FindWindowEx(h,0,"tdbedit",nil);
SendMessage(hndl,WM_GETTEXT,255, Integer(@st[1]));
Label1.Caption:= st;
опять же с последнего эдита берет..


 
balepa ©   (2006-04-27 17:18) [66]

http://delphimaster.net/view/4-1145516275/

function ChildWnd(h:THandle; wparam:integer): Bool;stdcall;
var
 Text: array [0..256] of Char;
begin
GetWindowText(h, text, 200);
if Text = "Edit1" then
 Form1.Label1.Caption:= Text
else if Text = "Edit2" then
 Form1.Label2.Caption:= Text
else if Text = "Edit3" then
 Form1.Label3.Caption:= Text
else if Text = "Edit4" then
 Form1.Label4.Caption:= Text;
result:=true;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 h: hwnd;
begin
 EnumChildWindows(Form1.Handle,@ChildWnd,0);
end;


 
balepa ©   (2006-04-28 06:38) [67]

function EnumProc(h: HWND;lparam: Integer): Boolean;
var
 N: PChar;
begin
 getmem(N,51);
 GetClassName(h,N,50);
 if N = "TEdit" then
   MessageBox(Form1.Handle,"ff","ff",16);
 freemem(N,51);
result:= True;
end;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 EnumChildWindows(Form1.Handle,@EnumProc,0);
end;


 
Жаннка   (2006-04-28 13:52) [68]

вот код,вытаскивает из эдитов на форме текст,а как быть если эдит находится на panel или pagecontrol,нашла функцию
EnumChildWindows(WndParent: HWnd; EnumFunc: TFarProc; lparam: Longint): Bool;
WndParent - эт понятно,а с enumfunc и lparam как быть?
посмарела предыдущий пост чет не врубаюсь
var
Hndl,h: THandle;
st: string;
begin
SetLength(st, 255);
FillChar(st[1],255,0);
h:=FindWindow(nil,"Form1");
Hndl:= FindWindowEx(h,0,"TEdit",nil);
SendMessage(hndl,WM_getTEXT,255, Integer(@st[1]));
edit1.text:= st;
Hndl:= FindWindowEx(h,Hndl,"TEdit",nil);
SendMessage(hndl,WM_getTEXT,255, Integer(@st[1]));
edit2.text:=st;


 
balepa ©   (2006-04-28 13:56) [69]


> Жаннка   (28.04.06 13:52) [68]


Во что неврубаетесь ?


 
Жаннка   (2006-04-28 14:00) [70]

как работать с функцией EnumChildWindows
а точнее EnumFunc: TFarProc; lparam: Longint
что с ними делать?


 
balepa ©   (2006-04-28 14:09) [71]


> Жаннка   (28.04.06 14:00) [70]
> как работать с функцией EnumChildWindows
> а точнее EnumFunc: TFarProc; lparam: Longint
> что с ними делать?


Издеваетесь ?
Вот так ее нужно описать перед словом Interface
function EnumProc(h: HWND;lparam: Integer): Boolean; STDCALL;

А вот это после слова interface;
function EnumProc(h: HWND;lparam: Integer): Boolean;
//h = handle эдита
var
N: PChar;
begin
getmem(N,51);
GetClassName(h,N,50);
if N = "TEdit" then
  MessageBox(Form1.Handle,"ff","ff",16); //вот здесь берете текст с эдита с помощью Sendmessage(....); и вставляете куда вам надо.
freemem(N,51);
result:= True;
end;


 
balepa ©   (2006-04-28 14:38) [72]


> balepa ©   (28.04.06 14:09) [71]


з.ы. сори не interface, а implementation



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.019 c
4-1141014465
FunkyByte
2006-02-27 07:27
2006.05.21
Программная коректировка размеров окна при изменении его размеров


2-1146474009
Ded22
2006-05-01 13:00
2006.05.21
SQL Запрос !


11-1126614037
MaFon
2005-09-13 16:20
2006.05.21
KOL+MCK - резидентная программа


8-1131503385
Irinka
2005-11-09 05:29
2006.05.21
Работа с PNG


2-1146567183
Id
2006-05-02 14:53
2006.05.21
Взаимодействие баз данных в пределах одного запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский