Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 136
от 29.05.2005, 13:40

Администратор:Калашников О.А.
В номере:Вопросов: 6, Ответов: 24


Вопрос № 21248: Здравствуйте уважаемые. Такой вопрос: Имеется компонент PageControl, нужно динамически во время выполнения программы создавать вкладки, причем с указанием заголовка. То есть ввел например в InputBox строку, тут же создалась вкладка с таким за...
Вопрос № 21253: Уважаемые эксперты. как сделать 1-что бы окно было по дефолту на весь экран. 2-Как запустить в программе экзешник. 3-Как написть что бы программа приводила файл вида (см. прил 1) к виду (см. прил 2) 4-Как лучше закрывать одну форм...
Вопрос № 21259: сБЮФЮЕЛШЕ ЩЙЯОЕПРШ!!!!!! оНЛНЦХРЕ МЮ Delfi 7 ЯДЕКЮРЭ ОНХЯЙ Б RichEdit!!!...
Вопрос № 21269: Добрый день всем. База на ASA(SyBase) 9. Программа на Delphi 6. У меня такой вопрос. Как через ADO вытащить все триггера к таблице и сам текст этих триггеров. И текст хранимых процедур и функций. Заранее благодарен. Александр....
Вопрос № 21270: Здравствуйте, уважаемые эксперты. Вопрос такой: как в delphi защитить программу (исходники) паролем? Я имею в виду, чтобы при открытии проекта в Delphi, она сама выдавала запрос пароля и если он введен неправильно, не открывала бы проект. Спа...
Вопрос № 21271: Добрый день уважаемые эксперты Не могли бы вы помочь мне в решении одной проблемы, а то я уже немного лазил по Интернете, спрашивал коллег но все без толку. Одна надежда на Вас. Суть вопроса. Мне нужно в Delphi рисовать стрелки (много) и мне инте...

Вопрос № 21248
Здравствуйте уважаемые.
Такой вопрос:
Имеется компонент PageControl, нужно динамически во время выполнения программы создавать вкладки, причем с указанием заголовка. То есть ввел например в InputBox строку, тут же создалась вкладка с таким заголовком.
Заранее спасибо
Отправлен: 23.05.2005, 21:15
Вопрос задал: Pithon (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Jadd
Здравствуйте, Pithon!
Все очень просто. Достаточно хелп открыть и почитать. Там про PageControl все расписано. Ладно. Вот Вам пример:
var
sheet: TTabSheet;
begin
sheet := TTabSheet.Create(PageControl1); //создаем страницу и в качестве парэнт даем наш контрол
sheet.PageControl := PageControl1; //Указываем на родителя
sheet.Caption := 'Some caption'; //ставим текст заголовка
end;
Ну и дальше мы можем делать с этой страницей все, что заблагорассудится. Опять же, открываем хелп на классе TTabSheet и читаем про все свойства и методы. Удачи.
Ответ отправил: Jadd (статус: 4-ый класс)
Отправлен: 23.05.2005, 22:52

Отвечает: Ballon
Здравствуйте, Pithon!
Используй лучше компонент TabControl пример с ним смотри ниже:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN)and(Edit1.Text <> '') then
begin
TabControl1.Tabs.Add(Edit1.Text);
TabControl1.TabIndex :=TabControl1.Tabs.Count-1;
end;
end;
Ответ отправил: Ballon (статус: 2-ой класс)
Отправлен: 24.05.2005, 09:55

Отвечает: Delphin
Здравствуйте, Pithon!
А что мешает это сделать?
Просто добавляй еще одну.
Качни себе книжку "Сто компонентов общего назначения" и почитай если ничего не понимаешь.
Ответ отправил: Delphin (статус: 3-ий класс)
Отправлен: 24.05.2005, 10:13

Отвечает: streetcat
Здравствуйте, Pithon!
приведенный в приложении код взят из файла справки Delphi стр. "Page controls"

Приложение:

Ответ отправил: streetcat (статус: 3-ий класс)
Отправлен: 24.05.2005, 15:06


Вопрос № 21253
Уважаемые эксперты.
как сделать
1-что бы окно было по дефолту на весь экран.
2-Как запустить в программе экзешник.
3-Как написть что бы программа приводила файл вида (см. прил 1) к виду (см. прил 2)
4-Как лучше закрывать одну форму и открывать другую (какими командами пользоваться).
Заранее огромное спасибо

Приложение:

Отправлен: 24.05.2005, 01:04
Вопрос задал: twmd (статус: 3-ий класс)
Всего ответов отправлено: 8

Отвечает: sir henry
Здравствуйте, twmd!
1. TForm.WindowState:=wsMaximized;
2. ShellExecute(hWnd, 'open', 'имя_файла_программы', 'Строка параметров программы', 'Рабочий_каталог_программы', SW_SHOW);
3. Считывать файл построчно и формировать строку как Вам нужно, потом записывать строку в другой файл.
4. Если форму предполагается использовать в дальнейшем, то Form.Hide (скрыть), Form.Show (показать).
Если форма больше не нужна, то Form.Close (закрыть навсегда).
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.05.2005, 05:38

Отвечает: Pushkin
Здравствуйте, twmd!
1. Form1.Windowstyle="wsMaximized" или присваивать свойствам Height, Top, Left, Width соответствующие значения;
2. WinExec, ShellExecute, CreateProcess и т.п.
3. Все аккорды пишутся символами латиницы, следовательно нужно проверять первый символ-не пробел в строке. Если его код находится в диапазоне A..z, тогда добавляем символ '>' в начало строки, при этом один пробел убираем.
4. Открывать ShowModal(); или Show(); закрывать Close;
Ответ отправил: Pushkin (статус: 2-ой класс)
Отправлен: 24.05.2005, 09:30

Отвечает: Jadd
Здравствуйте, twmd!
По-порядку:
1)В свойстве WindowState главной формы нужно выбрать wsMaximized.
2)Тут несколько вариантов: а)(самый правильный) CreateProcess (описание в MSDN, в хелпе или у меня ;) ); б)(тоже неплохой) shell_exequte (описание там же); в)(не самый хороший, т.к. устарел) winexec (описание сам догадаешься где ;) ).
3)Не совсем понятно что надо. Расставить значки > и ! через строчку? Считываешь файл в буфер строк (например, в TList) и построчно обрабатываешь, а затем сохраняешь в файле. Если не разберешься, пиши, дам пример.
4)Зависит от того, акая форма. Если модальная, то Form1.ShowModal, если не модальная - Form1.Show. Закрываешь любую форму через Form1.Close. Разумеется, вместо Form1 ставишь имя класса твоей формы. А, вообще, в вопросе сквозит необходимостью покупки хорошей книги по Дельфи или "рытье" в хелпе и свойствах объектов и компонент.
Надеюсь, что помог. Удачи.
Ответ отправил: Jadd (статус: 4-ый класс)
Отправлен: 24.05.2005, 09:32

Отвечает: Delphin
Здравствуйте, twmd!
1: В редакторе в свойствах формы ставь WindowState в Maxemized и редактируй его развернутым на весь экран.
2: Смотри Пр1.
3: А что то изменилось?!?
4: Вызывай форму Form1.Show; - Вызов просто открытием формы на равне с другими. Form1.ShowModal; - Вызов с перекрытием фокуса всех остальных форм программы. Form1.Hide; - Скрытие формы.

Приложение:

Ответ отправил: Delphin (статус: 3-ий класс)
Отправлен: 24.05.2005, 10:10

Отвечает: Gin
Здравствуйте, twmd!
1) Вариантов много, зайдите на
http://www.delphiworld.narod.ru/ В подразделе "Размеры и Положение" раздела "Программы и Интерфес" найдете ВСЕ что Вам нужно. А здесь просттой пример:
procedure TForm1.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
Left := 0;
Top := 0;
Height := Screen.Height;
Width := Screen.Width;
end;
2) Опять таки - есть варианты.
procedure TForm1.Button1Click(Sender: TObject);
var
w1: Word;
p1, p2: array[0..100] of Char;
begin
StrPcopy(p1, 'NOTEPAD');
if GetModuleHandle(p1) = 0 then
begin
StrPcopy(p2, 'C:WINDOWSNOTEPAD.EXE');
w1 := WinExec(p2, SW_Restore);
end;
end;
С Уважением, Gin.
Ответ отправил: Gin (статус: 2-ой класс)
Отправлен: 24.05.2005, 12:30

Отвечает: VBA
Здравствуйте, twmd!
Ответ на вопрос 1:
procedure TForm1.FormCreate(Sender: TObject);
begin
WindowState:=wsMinimized;
FormStyle:=fsStayOnTop;
end;
Ответ на вопрос 2:
WinExec('FileName.exe',SW_NORMAL);
Вместо SW_NORMAL может быть SW_HIDE, SW_RESTORE, SW_MAXIMIZE и др. (см. хелп.).
ShellExecute(HWND, Opearation, FileName, Parameters, Directory, ShowCmd);
HWND - хендл окна (HWND)
Operation - выполняемое действие, например 'Open' или 'Print' (String)
FileName - имя запускаемого файла (String)
Parameters - параметры, передаваемые запускаемому файлу (String)
Directory - рабочая папка (String)
ShowCmd - вид окна после запуска файла (SW_HIDE, SW_RESTORE и тд.)
Ответ на вопрос 4:
Для закрытия формы можно использовать метод Close или Free. В последнем случае форма удаляется из памяти, и если её необходимо будет снова открыть то делаем так:
MainForm:=TMainForm.Create(Self).
В случае использования Close форму можно показать так:
MainForm.Show или MainForm.ShowModal.
Ответ отправил: VBA (статус: 3-ий класс)
Отправлен: 24.05.2005, 13:34

Отвечает: streetcat
Здравствуйте, twmd!
1. Задай в свойстве главной формы TForm.WindowState := wsMaximized;
или в обработчике OnCreate формы напишите: showwindow(Handle, SW_MAXIMIZE);
2. Через CreateProcess или WinExec куда проще:
WinExec('prog.exe', SW_SHOW);
3. Определяй первые символы строки: если это слово "припев" ставь 1-м символом !
если латинская буква или цифра то ставь > (пробелы пропускай)
4. Form1.Close для закрывания Form1 и Form2.Show (или ShowModal) для открывания Form2.
Ответ отправил: streetcat (статус: 3-ий класс)
Отправлен: 24.05.2005, 15:22

Отвечает: Stamm
Здравствуйте, twmd!
Отвечу на 2 вопрос:
WinExec('C:1.exe, SW_SHOW)
И на 4
Form2.show;
Form1.hide;
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 24.05.2005, 18:55


Вопрос № 21259
сБЮФЮЕЛШЕ ЩЙЯОЕПРШ!!!!!! оНЛНЦХРЕ МЮ Delfi 7 ЯДЕКЮРЭ ОНХЯЙ Б RichEdit!!!
Отправлен: 24.05.2005, 07:01
Вопрос задал: killer-klod (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: sir henry
Здравствуйте, killer-klod!
Примерный код в приложении.

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.05.2005, 08:01

Отвечает: Gin
Здравствуйте, killer-klod!
http://blackman.wp-club.net/myfaq/faq10a.php#anc669
С Уважением, Gin.
Ответ отправил: Gin (статус: 2-ой класс)
Отправлен: 24.05.2005, 12:30

Отвечает: streetcat
Здравствуйте, killer-klod!
используй функции Pos или PosEx
например, нужно найти строку "delphi" в RichEdit:
var
n: integer;
source: string;
begin
source := richedit1.text;
n := pos('delphi', source);
{функция возвращает символ, с которого начинается искомая строка в исходной строке,
если она там найдена, и 0 - в противном случае}
if n <> 0 then
// делаем что-то если строка найдена (напр. выделяем)
else
// не судьба... ;)
{P.S. символы в строках нумеруются начиная с 1 а не с 0
P.P.S. PosEx выполняет поиск с N-нного символа в строке. удачи!}
Ответ отправил: streetcat (статус: 3-ий класс)
Отправлен: 24.05.2005, 15:51

Отвечает: X
Здравствуйте, killer-klod!
Поиск можно сделать например при помощи функции pos.
Вот пример:

Приложение:

Ответ отправил: X (статус: 5-ый класс)
Отправлен: 24.05.2005, 15:55


Вопрос № 21269
Добрый день всем. База на ASA(SyBase) 9. Программа на Delphi 6. У меня такой вопрос. Как через ADO вытащить все триггера к таблице и сам текст этих триггеров. И текст хранимых процедур и функций. Заранее благодарен.
Александр.
Отправлен: 24.05.2005, 11:24
Вопрос задал: sb (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: sir henry
Здравствуйте, sb!
Не знаю, как это делается в SYBASE, однако по аналогии с INTERBASE'ом изменение можно сделать коммандой SQL:
ALTER TRIGGER (ALTER PROCEDURE) Название
Это убъет старый триггер (процедуру) и запишет новый.
Комманды SQL можно давать через компонент TADOCommand.
Больше ничего сделать нельзя. Если же Вы, как специалист по SYBASE, знаете, как в самом SYBASE редактировать тригерры (процедуры) то воспользуйтесь этим средством, опять же через TADOCommand.
Получить список хранимых процедур можно с помощью следующей процедуры:
ADOConnection1.GetProcedureNames(ListBox1.Items);
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.05.2005, 13:18


Вопрос № 21270
Здравствуйте, уважаемые эксперты.
Вопрос такой: как в delphi защитить программу (исходники) паролем? Я имею в виду, чтобы при открытии проекта в Delphi, она сама выдавала запрос пароля и если он введен неправильно, не открывала бы проект.
Спасибо за ответы.
Отправлен: 24.05.2005, 11:50
Вопрос задал: Lichkaty Alexander (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: Jadd
Здравствуйте, Lichkaty Alexander!
Давайте разбираться. Файл проекта - файл в формате XML. Исходники - обычный текстовик. Как защищать? Эту защиту можно обойти. Единственный способ - хранение исходников в CVS системах (WinCVS, SourceSafe и проч.). Но там не то, чтобы не откроет, а просто выгрузить не получится без должных прав доступа.
Ответ отправил: Jadd (статус: 4-ый класс)
Отправлен: 24.05.2005, 12:08

Отвечает: streetcat
Здравствуйте, Lichkaty Alexander!
а никак ;))
вставь в исходники свой копирайт и наслаждайся ;))
или защищай их внешними программами
(хорошо было б)
Ответ отправил: streetcat (статус: 3-ий класс)
Отправлен: 24.05.2005, 16:01

Отвечает: Master89
Здравствуйте, Lichkaty Alexander!
Этого нельзя сделать по следующим причинам:
1. В Delphi не существует такой "системы защиты".
2. Файлы *.dfm, *.pas и *.dpr никак не зашифрованы, поэтому могут быть открыты любым текстовым редактором.
Единственный выход: не давать исходники своих программ кому попало.
Ответ отправил: Master89 (статус: 3-ий класс)
Отправлен: 24.05.2005, 18:24
Оценка за ответ: 5

Отвечает: Stamm
Здравствуйте, Lichkaty Alexander!
Такого способа я не знаю, зато могу предложить архивировать исходники с паролем
Ответ отправил: Stamm (статус: 3-ий класс)
Отправлен: 24.05.2005, 18:56

Отвечает: sir henry
Здравствуйте, Lichkaty Alexander!
Можно ли такое делать в Дельфи я не знаю (по крайней мере даже намека на это не встречал нигде), однако исходники проекта это текстовые файлы и защитить их паролем невозможно.
Предлагаю другой способ - заархивировать их, например RAR'ом и на рахив поставить пароль.
Либо, если Вы работаете в W2K и у Вас диск отформатирован в NTFS, создать каталог для проекта и дать к нему достут только тем, кто этого заслуживает (например, себе любимому :) ).
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 25.05.2005, 07:31
Оценка за ответ: 4


Вопрос № 21271
Добрый день уважаемые эксперты
Не могли бы вы помочь мне в решении одной проблемы, а то я уже немного лазил по Интернете, спрашивал коллег но все без толку. Одна надежда на Вас. Суть вопроса. Мне нужно в Delphi рисовать стрелки (много) и мне интересно есть ли компонент для этого или как это сделать «подручными средствами».
Помогите пожалуйста,
С уважением
Тарас

Приложение:

Отправлен: 24.05.2005, 11:59
Вопрос задал: btaras (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Jadd
Здравствуйте, btaras!
Не понятно что за стрелки? Имеется в виду на канве рисовать объектами GDI? Напишите класс, который бы рисовал стрелку и передавайте в метод Draw направление и начальные координаты. Что еще нужно?
Ответ отправил: Jadd (статус: 4-ый класс)
Отправлен: 24.05.2005, 12:19

Отвечает: sir henry
Здравствуйте, btaras!
Именно компонент? Напишите процедуру и применяйте ее с координатами для Вашей рисовальной поверхности.
Если коротко, стрелка - это прямая линия определенной длинны + линия идущая от начала главной линии под каким-либо углом к ней + вторая линия с таким-же, но отрицательным углом.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.05.2005, 14:26


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное