form1 - основное окно form2 - окро авторизации в первой форме проверяешь авторизован или нет. Если нет то form2.show; form1.enabled:=false; в форме авторизации прописываешь в обработчике onCanClose результат false если неавторизован. Если авторизован то true. также в onClose ставишь form1.enabled:=true;
Form1 - наше окно Form2 - окно авторизации из первой - Form1.ShowModal; и первая форма будет ждать, пока вторая не закроется также на Form2 кнопкам можно присвоить ModalResult, тогда они будут закрывать форму (без всяких Close), а в первой форме мы будем знать какая кнопка была нажата во второй (Form2.ModalResult)
Зачем 2 формы-то? Не проще посередине прям над объектами формы повесить либо фрейм с inputbox'ами, либо какой-нибудь groupbox с ними же. Ну а дальше, как и отписался народ выше, блочить всё, что нужно, пока не авторизуешься, а далее делать фрейму\групбоксу visible:=false...
К примеру, на форму idHTTP закинь (в инди клиентс ищи), в uses добавь IdMultipartFormData далее IdHTTP1.Post('http://bla-bla.ru/index.php', data) где data: TIdMultiPartFormDataStream в дату добавляем data.AddFormField('имя параметра','значение параметра')
Ну, видимо, как-то так, если с инди... Code: program Project1; {$APPTYPE CONSOLE} uses SysUtils, IdHTTP, IdComponent, classes; var IdHTTP1: TIdHTTP; Data: TStringList; begin Data := TStringList.Create; IdHTTP1:= TIdHTTP.Create(nil); {$R *.res} Data.add('bla-bla'); IdHTTP1.Post('http://sait.ru' ,Data); end. Хотя, в сторону сокетов тоже глянуть можно
подскажите) Как прописать путь к файлу лежашим в 1ной папке с Проджект1? (полный путь вида С:......../.... не подходит) кто не понял) у мну есть флеш аниме, и когда я в нем пишу путь к файлу он создает полный путь(с именем диска и папок) при етом если я переименую диск или 1 из папок флеш не находиться(((
Здравствуйте, как выполнить через делфи нужную Dos команду, например я хочу выполнить Code: md c:\SSS как нее ковырялся с ShellExecute и WinExec не получается
WinExec и ShellExecute немного не то. С их помощью можно выполнять команды DOS (типа rundl32 xx.dl, бла бла ), вызывать процедуры запуска файлов с параметрами. Но для того, чтобы выполнить консольную команду можно создать поток, запускающий консольную программу. Подключаем только уже написанный для этого модуль. Code: //Подключаем модуль в Uses uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, StdCtrls, ExtCtrls, ComCtrls, [COLOR=Blue]CmdLine[/COLOR]; type TForm1 = class(TForm) btnRun: TButton; btnWrite: TButton; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } [COLOR=Yellow]procedure DoCommand(_lpcmd:string);[/COLOR] end; var Form1: TForm1; [COLOR=Yellow]CmdCom :TRedirectThread;[/COLOR] implementation {$R *.dfm} procedure TForm1.DoCommand(_lpcmd:string); var _data:string; begin if CmdCom<>nil then begin _data :=_lpcmd+#13#10; CharToOem(@_data[1],@_data[1]); CmdCom.WriteData(_data); end; end; procedure TForm1.FormCreate(Sender: TObject); begin CmdCom:= TRedirectThread.Create(true); CmdCom.RunProgram :='cmd'; CmdCom.Params :=''; CmdCom.FreeOnTerminate := true; CmdCom.Resume; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if CmdCom<>nil then CmdCom.Terminate(); end; procedure TForm1.Button1Click(Sender: TObject); begin [COLOR=Yellow] DoCommand('mkdir c:\121');[/COLOR] // задаем командную строку end; end. Модуль CmdLine
progressbar1 Привет всем обьясните пожалуйсто как можно сделать в таком коде чтобы при выборе файла который отправлять работал Progressbar1 никак не пойму как нужно его сюда вставить да ещё чтобы по окончании передачи файла возникало окно типо Файл успешно передан ! procedure TForm1.Button4Click(Sender: TObject); begin if OpenDialog1.Execute then idUDPClient1.Send(OpenDialog1.FileName) //выбираем и отправляем файл end; end.
То, что ты делаешь - это не файл отправляет, а имя файла. Для того чтобы отправить файл тебе нужно сделать примерно так: progressbar1.max = размер файла затем файл блоками читаешь и отправляешь. И в прогрессбар ставишь сколько уже отправил данных
Тебе нужно самому постоить HTTP запрос. Вид запроса для отсылки файла примерно такой: Code: POST /test.php? HTTP/1.1 Host: site.ru Content-Length: 185 Content-Type: multipart/form-data; boundary=----------HRMPqBFF7FBJH4xJX2p87i ------------HRMPqBFF7FBJH4xJX2p87i Content-Disposition: form-data; name="userfile"; filename="myfilename.txt" Content-Type: text/plain TEST TEST ------------HRMPqBFF7FBJH4xJX2p87i-- ----------HRMPqBFF7FBJH4xJX2p87i - это уникальный разделитель который невстречается в передаваемых данных. ты модешь генерить его сам. каждая строчка заканчивается на #13#10 В дельфе этот запрос будет строиться примерно так: 1) генери boundary типа ------------HRMPqBFF7FBJH4xJX2p87i 2) data:=boundary+#13#10+'Content-Disposition: form-data; name="userfile"; filename="'+filename+'"'+#13#10+'Content-Type: text/plain'+#13#10#13#10+filedata+#13#10#13#10+boundary+'--'+#13#10; 3) pack:='POST /'+script+' HTTP/1.1'#13#10+Host: '+host+#13#10+'Content-Length: '+inttostr(length(data))+#13#10+'Content-Type: multipart/form-data; boundary='+boundary+#13#10#13#10+data; 4) СОединяйся с сервером каких угодно способом и шли ему pack
Тогда копай тут: в IdHttp есть модуль IdMultipartFormData А нем есть класс TIdMultiPartFormDataStream; в этом классе есть процедура AddFile которая добавляет файл Через idHTTP1.Post можно послать как раз данные из TIdMultiPartFormDataStream Надеюсь понял какая последовательность всего Если быть точным то это выглядит примерно так: Code: uses IdMultipartFormData; procedure TForm1.Button1Click(Sender: TObject); var d:TIdMultiPartFormDataStream; begin d:=TIdMultiPartFormDataStream.Create; d.AddFile('userfile','c:\test.txt','text/plain'); idHTTP1.Post('/index.php?',d); end;