Вопрос № 21569: Здравствуйте уважаемые эксперты!
У меня такая проблема:
Нужно создать меню, типа как в телефоне:
пункт 1
>пункт 2
...
где > - произвольная картинка. Чтобы можно было перемещаться по меню стрелками вверх и вниз, и ч...Вопрос № 21570: Здраствуйте!
Отправил вопрос и что-то пусто... (глюк?) :(
При работе с TreeView столкнулся с проблемой:
При закрытии формы нужно сохранить позицию выделенного узла, а при следующем старте проги выделить этот узел.
Сначала подумал сохр...Вопрос № 21577: Добрый день
Помогите пожалуйста реализовать следующие код:
Есть Edit1 (Login) and Edit2 (Pass), так же на форме есть ComboBox1 и самое главное TreeView1.
Суть следующая. Я ввожу логин и пароль в Editы, выбираю в ComboBox ветку куда добави...Вопрос № 21588: Здраствуйте уважаемые эксперты!!!
Мне бы хотелось узнать как работать c OpenGL.
Для того чтобы делать свои игры.
И ещё как сделать так чтобы например моя прога могла соединяться
с другим компьютером с помощью дозвона по набору номера....Вопрос № 21593: Приветствую всех кто читает данное сообщение.
Вопрос у меня следующий: как из Memo можно зделать окно DOS или чтото похожее (м.п. в этом окне должна выполняться всего одна программа).
Заранее всех благодарю.
!!!P.S. В ответе желательно п...Вопрос № 21597: Здравствуйте, у меня такой вопрос как из Delphi 6 получить имя текущего пользователя Windows(минимум). И как максимум прлучить доступ до Active Directory, для получения всей информации по пользователю. ...Вопрос № 21620:
Здравствуйте уважаемые эксперты.
Вот такой вопрос:
Создаю программу для обработки векторной графики.
Сейчас процесс встал немогу найти описания, и исходников основных
векторных форматов типа eps и т.д.
Пожалуйста дайте ссылку...
Вопрос № 21.569
Здравствуйте уважаемые эксперты!
У меня такая проблема:
Нужно создать меню, типа как в телефоне:
пункт 1
>пункт 2
...
где > - произвольная картинка. Чтобы можно было перемещаться по меню стрелками вверх и вниз, и чтобы можно было заходить в пункты меню. Не могу найти такую компоненту!
На форуме delphimaster мне посоветовали посмотреть в коллекции JEDI, но она у меня почему-то не устанавливается(Delphi 6)!
Посоветуйте компоненту.
Спасибо!
Отправлен: 31.05.2005, 17:08
Вопрос задала: Ермаков Алексей (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: streetcat
Здравствуйте, Ермаков Алексей!
Я посоветую написать самому такую компоненту.
могу помочь в реализации, мое мыло michael91@yandex.ru
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 5-ый класс)
Отправлен: 31.05.2005, 21:13 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Ермаков Алексей!
Можно сделать проще:
Установите на форму несколько кнопок типа TBitBtn (это кнопка с картинками) и пользуйтесь на здоровье. По ним можно хоть клавишами, хоть мышкой перемещаться.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:06 Оценка за ответ: 3
Отвечает: VBA
Здравствуйте, Ермаков Алексей!
Toolbar2000+TBX
http://www.jrsoftware.org/tb2k.php
http://www.rmklever.com/delphitbx.html
--------- Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 4-ый класс)
Отправлен: 01.06.2005, 12:56
Вопрос № 21.570
Здраствуйте!
Отправил вопрос и что-то пусто... (глюк?) :(
При работе с TreeView столкнулся с проблемой:
При закрытии формы нужно сохранить позицию выделенного узла, а при следующем старте проги выделить этот узел.
Сначала подумал сохранить (в ini) TreeView1.Selected.Level+TreeView1.Selected.Index , а при старте TreeView1.Items.Item[+значение из ini-файла+].Selected:=true , но это не верно...
Вот сижу и ломаю голову...
Или надо делать только с помощью getNextSibling в цикле, как для получения пути (а-ля проводник)? Может есть другие варианты?
Отправлен: 31.05.2005, 17:30
Вопрос задала: nimoid (статус: 2-ой класс)
Всего ответов отправлено: 4
Отвечает: Jadd
Здравствуйте, nimoid!
Можно хранить в реестре. Но хранить не индекс элемента, а какой-то признак выделенного элемента, например его имя или путь к этому элементу (например в формате XPath :) а почему бы и нет?), или какое-то число, которое идентифицирует этот элемент как выделенный, а затем Expand этой ветки.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 31.05.2005, 18:52 Оценка за ответ: 5 Комментарий оценки: В реестре не надо, я храню в ini-файле. Да и вопрос совсем не про это :) Имя не пойдет - они повторяются. Путь сохранять мне не нравится... муторно больно. Вот если число, то как его получить? Я в принципе про это и спрашивал. О... пока писал ответ родилась идейка небольшая - сохранять 2 значения: level и имя (имя не повторяется в пределах одного узла).
;-)
Отвечает: Bochvarov NikB
Здравствуйте, nimoid!
Тьи о закритие формьи или апликейшън спрашиваеш?
Есть ли в узлов твоего дерево что-то уникально? Если нет - надо добавить и потом, примерно во время создания узлов, отметит етот узел.
Если сделаеш обект tIdOne, в котором положит один идентификатор Id, можеш искать с ету процедуру.
Приложение:
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 31.05.2005, 19:36 Оценка за ответ: 5 Комментарий оценки: Уже все, но все равно спасибо :)
Отвечает: Denisss
Здравствуйте, nimoid!
Сохраняйте в INI:
TreeView1.Selected.AbsoluteIndex;
Загружайте из INI:
TreeView1.Items[<из INI>].Selected:= True;
Ответ отправил: Denisss (статус: 2-ой класс)
Отправлен: 31.05.2005, 19:39 Оценка за ответ: 5 Комментарий оценки: Воо! Наконец-то! -=8-) Спасибо!
Отвечает: sir henry
Здравствуйте, nimoid!
А может быть значительно упростить задачу с помощью:
TreeView1.SaveToFile('Имя_файла'); {Выгрузка всего дерева в файл при закрытии формы}
TreeView1.LoadFromFile('Имя_файла'); {Считывание дерева из файла при старте проги}
?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:10 Оценка за ответ: 4 Комментарий оценки: Нет, не то. Да и загрузка дерева у меня происходит совсем по-другому. Denisss уже подсказал как - TreeView1.Selected.AbsoluteIndex;
Вопрос № 21.577
Добрый день
Помогите пожалуйста реализовать следующие код:
Есть Edit1 (Login) and Edit2 (Pass), так же на форме есть ComboBox1 и самое главное TreeView1.
Суть следующая. Я ввожу логин и пароль в Editы, выбираю в ComboBox ветку куда добавить логин, нажимаю кнопку "Добавить". Все это сохраняется в инишке в виде login=pass, но и отображается Edit1 (Login) в TreeView.
Я начал реализовывать код следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
var e1,e2,s: string;f: textfile;
begin
e1:=Edit1.Text;
e2:=Edit2.Text;
assignfile(f,'autoLoginPLG.ini');
//rewrite(f);
append(f);
begin
if (e1='')or(e2='') then ShowMessage('Одно из полей пустое') else
s:=e1+'='+e2;
end;
writeln(f,s);
closefile(f);
Edit1.Clear;
Edit2.Clear;
Edit1.SetFocus;
end;
Отправлен: 31.05.2005, 19:15
Вопрос задала: Алексей (статус: Посетитель)
Всего ответов отправлено: 6
Отвечает: John Freeman
Здравствуйте, Комов!
1) ЭТО не ini файл - прочитай про TIniFile , будет в n раз удобнее
2) Лучше используй XML Parser - там метод EnumChilds и по нему строй TTreeView
--------- Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 31.05.2005, 19:29
Отвечает: Pushkin
Здравствуйте, Комов!
Сразу же есть несколько замечаний:
1. С файлами INI удобнее работать с помощью класса TIniFile.
2. Не возникнет ли такой ситуации, когда будет несколько одинаковых login, но находящихся в разных ветвях TreeView. Поэтому можно пары login=pass сохранять в файле INI не в общей куче, а в разных разделах (типа:
[имя ветви1]
login11=pass11
...
login1N=pass1N
...
[имя ветвиN]
loginN1=passN1
...
loginNN=passNN
3. Неплохо было бы сделать проверку на наличие такого login в выбранной ветви.
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 31.05.2005, 19:55
Отвечает: streetcat
Здравствуйте, Комов!
с ini-файлами лучше работать, используя специальные функции.
код сохранения в ини смотри в приложении 1.
а вот код добавления в дереве более громоздкий (приложение 2).
за подробностями на мыло michael91@yandex.ru
Приложение:
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 5-ый класс)
Отправлен: 31.05.2005, 21:13 Оценка за ответ: 4
Отвечает: Stamm
Здравствуйте, Комов!
Можно гораздо проще
VAr INIFile:TIniFile;
Begin
IniFile := TIniFile.Create('autoLoginPLG.ini');
e1:=Edit1.Text;
e2:=Edit2.Text;
IniFile.WriteString('Пароли',E1,'='+E2);
IniFile.Free
end;
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 31.05.2005, 21:22
Отвечает: sir henry
Здравствуйте, Комов!
1. Для работы с ini-файлом пользуйтесь классом TIniFile.
2. Я так понял у Вас сложность в добавлении login=password в TreeView?
var
MyItem: TTreeNode;
Begin
With TreeView1.Items do
Begin
MyItem:=Add(NIL, 'login');
AddChild(MyItem, 'password');
End;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:27
Отвечает: VBA
Здравствуйте, Комов!
Надо использовать класс TIniFile для работы с ini-файлами (удобнее). :-)
TreeView1.Items.AddChild(TreeView1.Selected,'Login');
--------- Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 4-ый класс)
Отправлен: 01.06.2005, 13:14
Вопрос № 21.588
Здраствуйте уважаемые эксперты!!!
Мне бы хотелось узнать как работать c OpenGL.
Для того чтобы делать свои игры.
И ещё как сделать так чтобы например моя прога могла соединяться
с другим компьютером с помощью дозвона по набору номера.
И ещё как сделать чтобы моя прога могла передавать голосовые сообщение поступаемые через микрофон во время сеанса связи!!!
Спасибо!!
Отправлен: 31.05.2005, 23:16
Вопрос задала: newinfo2005 (статус: 2-ой класс)
Всего ответов отправлено: 4
Отвечает: Jadd
Здравствуйте, newinfo2005!
А еще чтобы твоя программа булочки пекла, чтобы в магазин ходила, чтобы квартиру в чистоте содержала. Не много ли всего? Ну да ладно. Значит по-порядку.
1)OpenGL. Надеюсь, ты понимаешь, что в обычном FAQ нельзя охватить всю полноту и мощь OpenGL. А стало быть идешь в магазин и ищешь книги по программированию игр или ищешь в интернете книги по программировании графики OpenGL.
2) Модем - лишь железячное средство объединения двух устройств в сеть. В сети существуют правила, по которым данные передаются. Правила эти называются протоколами. В случае модема - это slip, ppp. Ну и протоколы самого высокого уровня - TCP. Вот про них и читай. Хотя в свое время IPX/SPX был более популярен из-за своей скорости. Книга была на русском языке по программированию для TCP/IP автора У. Стивенса. Читай.
3) А эта технология зовется VoIP, или Voice over IP - голос через протокол интернета (IP). Это тоже отдельная тема.
Видишь, тут много чего читать нужно. Все не так просто, как может показаться. Однако, дельфя тем и хороша, что кто-то когда-то какие-то компоненты реализовал. Советую зайти на torry.net и поискать соответствующие.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 31.05.2005, 23:36 Оценка за ответ: 5 Комментарий оценки: Наконец -то хоть один догодался что же я хотел!!!
Отвечает: Malish
Здравствуйте, newinfo2005!
Это вопрос или утверждение?
Для этого надо читать инфу!!! Все есть в интернете и в книгах ;)
Начинай разбираться с нуля, и когда будут реальные вопросы - задавай. А абстрактных у всех полно! :)
Или ты хочешь что бы скинулись и написали игру?
Ответ отправил: Malish (статус: Студент)
Отправлен: 31.05.2005, 23:41
Отвечает: sir henry
Здравствуйте, newinfo2005!
1. Найдите, с помощью Яндекса, книгу Краснова по OpenGL и Дельфи. Или купите в магазине.
Ссылка на статьи по OpenGL в Дельфи:
http://delphiworld.narod.ru/_graphic_.html
2. http://delphiworld.narod.ru/_internet_.html
3. Передавать куда?
Работа со звуком:
http://delphiworld.narod.ru/_multimedia_.html
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:52
Отвечает: X
Здравствуйте, newinfo2005!
Ну я разве что добавлю где найти книгу Краснова по OpenGl:
http://www.profis.net.ru/content/laboratory/index.html
Ну е ещё на эту тему:
http://delphigfx.mastak.ru/
http://megaengine.km.ru/index.html
Ответ отправил: X (статус: 5-ый класс)
Отправлен: 01.06.2005, 08:59 Оценка за ответ: 4 Комментарий оценки: Всё это хорошо но ведь я и 2 вопрос задал
Вопрос № 21.593
Приветствую всех кто читает данное сообщение.
Вопрос у меня следующий: как из Memo можно зделать окно DOS или чтото похожее (м.п. в этом окне должна выполняться всего одна программа).
Заранее всех благодарю.
!!!P.S. В ответе желательно полностью расписывать те действия которые должны происходить, также при наличии нескольких вариантов ответов желательно их нумировать!!!
Отправлен: 01.06.2005, 00:59
Вопрос задала: GREEDY (статус: Посетитель)
Всего ответов отправлено: 5
Отвечает: sir henry
Здравствуйте, GREEDY!
Полный вздор. Из мемо не надо делать окно DOS, оно совершенно для этого не предназначено.
Для этого есть специальное средство, называется консоль. Создается автоматически, как только Вы запускаете консольное приложение (например arj.exe или в начале своей программы укажете {$APPTYPE CONSOLE}).
Вот большой список статей по работе с консолью. Там все черезвычайно подробно и доходчиво:
http://delphiworld.narod.ru/_os_.html
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:58
Отвечает: Pushkin
Здравствуйте, GREEDY!
Можно просто сделать консольное приложение. Или Вы хотите сделать виртуальную MSDOS-машину? Необходимо уточнить вопрос
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 01.06.2005, 07:30
Отвечает: X
Здравствуйте, GREEDY!
1)Если просто консольное приложение, то File->New->Other->Console Application
2)Если надо чтобы программа работала в виртуальной машине DOS, то её надо писать вобще на паскале.
2)Если надо именно с помощью Memo, то смотри мой ответ на вопрос № 20621(хотя на консоь это не сильно похоже).
Ответ отправил: X (статус: 5-ый класс)
Отправлен: 01.06.2005, 09:07
Отвечает: Jadd
Здравствуйте, GREEDY!
дык был тут уже такой вопрос или подобный. Все, что нужно - создать райр (CreatePipe) и перенаправлять вывод досовского приложения в этот пайп. Лови линку на пример на WinAPI (там, правда, С++, но можно переделать) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp. В этом примере ключевые моменты вот какие:
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
saAttr.nLength := Length(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle := TRUE; //Нужно сделать true, чтобы хэндл пайпа наследовался
saAttr.lpSecurityDescriptor := 0;
...................................................................Дальше..........................
hStdout := GetStdHandle(STD_OUTPUT_HANDLE); //получаем хэндл для стандартного потока вывода
Здесь сделаю отступление. Дело в том, что винда эту фитчу заимствовала из юникса (дос была сильно покромсанной юникс). В юниксе при создании процесса с ним ассоциируются три потока: поток ввода, поток вывода и поток ошибок. С Виндами примерно таже ситуация. Поэтому мы и хватаем этот поток вывода, чтобы отобразить вывод дочернего процесса в нужном нам окне. Едем дальше:
//При создании дочернего процесса (процесса, вывод которого мы перехватываем) передаем ему хэндлы пайпа
siStartInfo.hStdError = hChildStdoutWr;
siStartInfo.hStdOutput = hChildStdoutWr;
siStartInfo.hStdInput = hChildStdinRd;
Ну а дальше - все стандартно. ReadFile, WriteFile - пишем/читаем из/в пайп, только первым параметром идет хэндл пайпа. Ну, а то, что пришло в переменную в функции ReadFile кидаем в мемку или парсим и кидаем в мемку - тут уж дело хозяйское.
Кроче удачи, пиши, если что не ясно.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 01.06.2005, 09:43
Отвечает: VBA
Здравствуйте, GREEDY!
Вопрос туповат. :-)
Наверное тебе нужно, чтобы результаты запуска какой-либо программы выводились в мемо.
Сделать это можно с использованием API-функций CreateProcess, CreatePipe, ReadFile.
Идея такая: Запускаем файл с использованием CreateProcess, перенаправляем вывод в pipe, читаем из pipe функцией ReadFile.
--------- Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 4-ый класс)
Отправлен: 01.06.2005, 13:31
Вопрос № 21.597
Здравствуйте, у меня такой вопрос как из Delphi 6 получить имя текущего пользователя Windows(минимум). И как максимум прлучить доступ до Active Directory, для получения всей информации по пользователю.
Отправлен: 01.06.2005, 06:21
Вопрос задала: DreamCatcher (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Master89
Здравствуйте, DreamCatcher!
Прочитать имя текущего пользователя можно из реестра, из ключа HKEY_CURRENT_USERSoftwareMicrosoftActive SetupInstalled Components{44BBA840-CC51-11CF-AAFA-00AA00B6015C}, параметр Username:
Uses Registry;
...
procedure TForm1.Button1Click(Sender: TObject);
Var Reg: TRegistry; UName: String;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey('SoftwareMicrosoftActive SetupInstalled Components{44BBA840-CC51-11CF-AAFA-00AA00B6015C}',False);
UName:=Reg.ReadString('Username');
Reg.Free;
ShowMessage('Имя текущего пользователя: '+UName+'.');
End;
Большое количество информации о пользователе и системе в целом находится в разделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion.
Ответ отправил: Master89 (статус: 5-ый класс)
Отправлен: 01.06.2005, 06:49
Отвечает: sir henry
Здравствуйте, DreamCatcher!
1. С помощью функции GetUserName()
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 07:21
Отвечает: John Freeman
Здравствуйте, DreamCatcher!
1) WINAPI - GetUserName
2) Import Type Library , находишь где-то в system32 activeds.tlb и импортируешь, получаешь набор классов вроде ADUser,ADComputer... Как работать - в сети есть пара статей как раз по делу.
--------- Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 01.06.2005, 13:26
Отвечает: Stamm
Здравствуйте, DreamCatcher!
Function GetUserFromWindows: string;
Var
UserName : string;
UserNameLen : Dword;
Begin
UserNameLen := 255;
SetLength(userName, UserNameLen);
If GetUserName(PChar(UserName), UserNameLen) Then
Result := Copy(UserName,1,UserNameLen - 1)
Else
Result := 'Unknown';
End;
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 01.06.2005, 18:11
Вопрос № 21.620
Здравствуйте уважаемые эксперты.
Вот такой вопрос:
Создаю программу для обработки векторной графики.
Сейчас процесс встал немогу найти описания, и исходников основных
векторных форматов типа eps и т.д.
Пожалуйста дайте ссылку или какую нибудь информаию по этому вопросу.
p.s. Везде в интернете где я смотрел смог найти только общее описание
основ вект.граф. но каким образом, и как хранятся эту формулы нигде не
могу найти.
Заранее спасибо.
Отправлен: 01.06.2005, 14:40
Вопрос задала: SemigloPs (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Master89
Здравствуйте, SemigloPs!
Наверное, мой ответ несколько не в тему, но хранить данные о векторных фигурах достаточно просто. Например, для хранения данных о прямоугольнике, можно запоминать координаты левого верхнего угла, а также длину и высоту. Для хранения окружности - координаты её центра и радиус. Для эллипса - координаты центра, радиус и коэффициент растяжения. Для треугольника - координаты всех его вершин. Для линии - координаты начала и конца. В принципе, это достаточно просто. Про существующие векторные форматы, увы, ничего
сказать не могу, т.к. не встречался с ними.
Ответ отправил: Master89 (статус: 5-ый класс)
Отправлен: 01.06.2005, 15:10
Отвечает: Jadd
Здравствуйте, SemigloPs!
Впринципе, достаточно посмотреть формат PS. Насколько я помню, от EPS он отличается незначительно. Посмотри на www.codenet.ru. Там должно быть описание этих форматов. Другой вариант - заюзать библиотеки, которые за тебя все это сделают.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 01.06.2005, 15:15
Отвечает: Мурник Роман
Здравствуйте, SemigloPs!
Насколько я знаю, EPS не совсем векторный формат и тем более не основной. Попробуй поискать в инете описание форматов CorelDraw и AutoCAD. Даю слово что на 99% найдешь что нужно.
Ответ отправил: Мурник Роман (статус: 1-ый класс)
Отправлен: 01.06.2005, 19:47