Страница 1 из 2

Ворос чайника - как отобразить другую форму

Добавлено: 16 сен 2006, 05:35
Nikoshka
Создал MainMenu, создал там пункты, но как оказалось в Delphi вагон и тележка функций....
Немогу понять, как например по клику на пункт меню открывать новую форму?
В Object Inspektor во второй вкладке есть поле OnClick, я занес в него название формы, появилась процедру новая:

Код: Выделить всё

procedure TMain.new_progekt(Sender: TObject);
begin

end;
new_progekt - то что я вписал в поле OnClick. И что еще несовсем понятно, как нужно обращаться к новой форме? Т.е. в процедуре идет обращение к текущей кнопке на которую нажимаю, а вот что именно передается в качестве параметра и как с этим работать?

Форма уже есть заранее, я читал один мануал, там ниписано, что формы можно создавать, активировать и отображать, какой вариант нужен мне? С созданием понятно, активировать это вроде как сделать ее доступной для использования, наверное отобразить?

Вот теперь выходит там нужна ф-я открытия этой само формы, вот только что за ф-я и все ли яправильно делаю? Напишите плз кто не сильно занят простой пример, а то я пока немогу все это обмозговать сразу...

Добавлено: 16 сен 2006, 10:13
Duncon

Код: Выделить всё

procedure TMain.new_progekt(Sender: TObject); 
begin 
  Form2.show;
end;

Добавлено: 16 сен 2006, 14:04
Игорь Акопян
Sender - это объект на котором кликнули, можно на несколько элементов (причём разных) повесить один обработчик и по этому параметру определять кто был нажат

В приведённом выше примере Form2 будет отображена на экране, так же можно использовать функцию ShowModal чтобы форма была открыта в модальном режиме

Добавлено: 17 сен 2006, 16:42
Nikoshka
Игорь Акопян, Duncon,
Спасибо большое, первый раз сложно разобраться :)

Не подскажете, где можно скачать ПОЛНЫЙ набор функций, а то все поиски приводят к чебникам по delphi5, а то и меньше, неужели нет хелпа по функция на русском, как например php.net для php?

Добавлено: 17 сен 2006, 20:41
Duncon
Это не функции а методы класса, первое что нужно понять Delphi не PHP в нем нет ограничения творчества в виде комплекта функций за пределы которых не выйти..
Найди книжку скачай почитай, че непонятно спроси здесь...

конкретно по функциям вот ссылочка
http://www.helloworld.ru/texts/comp/lan ... ontent.htm

Добавлено: 18 сен 2006, 14:17
Игорь Акопян
а ещё есть Help по F1 ;) там есть описание всех объектов и их методов, свойств и событий.
В частности находим на панели инструментов контрол, кликаем его, но вместо того чтобы класть на форму, жмакаем Ф1 и получаем по нему справку, изучаем. По ссылке "see also" изучаем всё что касается этой темы

Добавлено: 19 сен 2006, 11:18
Nikoshka
>>>>че непонятно спроси здесь...

Что-то цитирование не работает.

Вот срауз возник вопрос, есть ф-я:

ThisDir := Extractfilepath(application.ExeName;

Я таким образом хочу запонить путь к текущему каталогу и потом работать с ним, вот только вопрос вот какой - какого типа должна быть эта переменная? Поставить string, но тогда он хочет ковычек и ф-я не работает, какой тип переменных используется для сохранения результата работы ф-и, которая возвращает вроде как стринговую переменную... ну может и не стринговую теперь даже...

Добавлено: 19 сен 2006, 14:32
UUU
Да, Никошка, тяжело тебе.

Вот, как сказал Игорь: тыкаешь мышкой в любое место Extractfilepath и жамкаешь клавиши контроли Ф1 (ОДНОВРЕМЕННО).
Появляется хелп, в котором читаем:

Delphi syntax:

function ExtractFilePath(const FileName: string): string;

Что означает, что в качестве параметров нужен стринг и возвращает стринг.


также имеем:
Delphi syntax:

property ExeName: string;

и пример:

This example copies a specified file into the same directory as the (cross-platform) application.

procedure TForm1.Save1Click(Sender: TObject);

var
NewFileName: string;
Msg: string;
NewFile: TFileStream;
OldFile: TFileStream;
begin
NewFileName := ExtractFilePath(Application.ExeName) + ExtractFileName(Edit1.Text);
Msg := Format('Copy %s to %s?', [Edit1.Text, NewFileName]);
if MessageDlg(Msg, mtCustom, mbOKCancel, 0) = mrOK then
begin
OldFile := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
NewFile := TFileStream.Create(NewFileName, fmCreate or fmShareDenyRead);

try
NewFile.CopyFrom(OldFile, OldFile.Size);
finally
FreeAndNil(NewFile);
end;
finally
FreeAndNil(OldFile);
end;
end;

end;

Добавлено: 19 сен 2006, 18:06
Nikoshka
UUU,
Кажется поперло, все сделал :) А инглиша я пока не знаю, php то выучил в апреле где-то, не до инглиша :(
p.s. Спасибо, чтобы я без вас делал :)

....
Все здаюсь, как создать список типа ComboBox т.е. как понормальному добавлять в него элементы?
Просто:

Код: Выделить всё

implementation

{$R *.dfm}

    ComboBox1.Items.Add('Vasea');
    ComboBox1.Items.Add('Vasea');
    ComboBox1.Items.Add('Vasea');

end.
Нехочет работать... пробовал сделать какую-нибудь процедуру с ним - работает, а без процедуры говорит Undeclared indentifier, как же просто создать список, который бы создавался, как только я открыл окно? Вроде бы все верно - обратился к объекту, правильно свойство указал, создаю новый элемент :(

Добавлено: 20 сен 2006, 09:23
UUU
Да, это клиника.

Лучше, Никошка, не суйся в это направление. Пусть другие разбираются. не твое это.
Удивляет, как ты ПХП смог выучить... Не зная на школьном уровне инглиша...

Твоя задача с комбобоксами не прет, т.к. ты пытаешься с ними работать, не создав их.