Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

HELP Помогите чайнику вызвать дочернюю форму !!!!!!!!!!!!!!!!!!!!

1.9K
17 апреля 2004 года
nicohack
60 / / 17.04.2004
Помогите кто шарит открыть форму дочернюю. плс
Страницы:
2.1K
17 апреля 2004 года
foxby
44 / / 16.07.2003
Цитата:
Originally posted by nicohack
Помогите кто шарит открыть форму дочернюю. плс



У тебя что, не работает Form1->ShowModal(); или Form1->Show();?

Если это не то что тебе нужно , то задай вопрос поконкретнее.

1.9K
17 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by foxby


У тебя что, не работает Form1->ShowModal(); или Form1->Show();?

Если это не то что тебе нужно , то задай вопрос поконкретнее.



Вот именно это и не работает

2.1K
17 апреля 2004 года
foxby
44 / / 16.07.2003
Цитата:
Originally posted by nicohack


Вот именно это и не работает



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

1
17 апреля 2004 года
kot_
7.3K / / 20.01.2000
 
Код:
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//----------------------
void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
TForm2 *Form2 = new TForm2(Application);
Form2->Visible = true;
}

Откроет форму при клике на кнопку.
1.9K
17 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by kot_
 
Код:
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//----------------------
void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
TForm2 *Form2 = new TForm2(Application);
Form2->Visible = true;
}

Откроет форму при клике на кнопку.



Very Very Big SENKS !!!:P

5.2K
18 апреля 2004 года
EUGIX
11 / / 05.10.2003
а что такой код никого не устраивает
Application->CreateForm(__classid(Tl_form), &l_form);
только надо еще
include "l_form.h"
подключить
1
19 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by EUGIX
а что такой код никого не устраивает
Application->CreateForm(__classid(Tl_form), &l_form);
только надо еще
include "l_form.h"
подключить


Про сути - практически никакой разницы. В одном случае вызывается свойство объекта Application, в другом случае - конструктор формы.

1.9K
19 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by kot_

Про сути - практически никакой разницы. В одном случае вызывается свойство объекта Application, в другом случае - конструктор формы.



Сорри, а могно еще узнать как ее закрыть. Мне нужно тест сделать.

1
19 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack


Сорри, а могно еще узнать как ее закрыть. Мне нужно тест сделать.


На форме кнопку сделай и в клике на ней напиши:

 
Код:
void __fastcall TForm2::BtnBtn2Click(TObject *Sender){
Close();
}

Если в первую форму должны быть возвернуты какие либо данные, то необходимо, во первых, включить заголовочный файл, во вторых, во второй форме необходимо в заголовочный файл в качестве открытого члена класса объявить указательна объект типа TForm *Form.
Так будет выглядеть код открытия :
Код:
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//----------------------
void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
TForm2 *Form2 = new TForm2(Application);
Form2->Form = this;
Form2->Visible = true;
}

}

А так код закрытия на второй форме:
Код:
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//----------------------
void __fastcall TForm2::BtnBtn1Click(TObject *Sender){
(TForm *)Form1 = Form;
Form1->Edit1->Text = Edit1->Text;
Visible = false;
}
}
1.9K
20 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by kot_

Код:
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//----------------------
void __fastcall TForm2::BtnBtn1Click(TObject *Sender){
:???: (TForm *)Form1 = Form;:???:
1)Form1->Edit1->Text = Edit1->Text;
Visible = false;
}
}


Объясни плс, что это означает. И еще в 1* выдало ошибку. Строку я закомментировал и все пошло

1
20 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack

Объясни плс, что это означает. И еще в 1* выдало ошибку. Строку я закомментировал и все пошло


Если ты создаешь форму из "кучи" - то есть выделяешь пямять динамически, то при попытке получения адреса любого компонента формы ты рискуешь получить доступ к неопределенной области памяти - что бы этого избежать необходимо получить указатель на объект к которому ты собираешься вернуться. Для этого в открытой части класса второй формы я объявляю указатель на объект TForm *Form а при открытии формы инициализирую его указателем на текущую форму.
Это делается здесь:

 
Код:
Form2->Form = this;

А эта строка необходима для того что бы таы мог из новой формы обратится к компоненту предыдущей
 
Код:
(TForm *)Form1 = Form;

Что такое приведение типов я надеюсь рассказывать не надо?
1
20 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack

И еще в 1* выдало ошибку. Строку я закомментировал и все пошло


Потому ошибку и выдало.

1.6K
20 апреля 2004 года
Kadet
101 / / 26.03.2003
Ну память выделил, а освободить. Потом из-за таких мелочей могут выходить большие глюки.
После закрытия формы:
delete Form2;
1.9K
20 апреля 2004 года
nicohack
60 / / 17.04.2004
И еще вопрос:angel: . Просто я учусь еще на 1 курсе на программера. В нас вдалбливают ПАСКАЛЬ _ ПАСКАЛЬ !!! 1 год его учил - понял че к чему, и давай дальше топать и тут же столкнулся с проблемами. Спасибо , что разжевываешь . Сам бы не допер. :))
Так вот вопрос . Точно не знаю, но помойму связан с указателями. Как передавать данные из формы в форму я понял, а вот как значение переменной увеличивать, в зависимости от ответа в предыдущей форме???
1
20 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack
И еще вопрос:angel: . Просто я учусь еще на 1 курсе на программера. В нас вдалбливают ПАСКАЛЬ _ ПАСКАЛЬ !!! 1 год его учил - понял че к чему, и давай дальше топать и тут же столкнулся с проблемами. Спасибо , что разжевываешь . Сам бы не допер. :))
Так вот вопрос . Точно не знаю, но помойму связан с указателями. Как передавать данные из формы в форму я понял, а вот как значение переменной увеличивать, в зависимости от ответа в предыдущей форме???


Все зависит от того, что именно тебе нужно получить. На пример задача модет быть решена следующим образом.
Первая форма содержит переменную которая должна увеличится на 1 если на второй форме нажата кнопка "Да" и остаться прежней если нет.
Это заголовочный файл первой формы:

Код:
#ifndef Unit1H
#define Unit1H
...//Здесь идет включение необходимых файлов
//объявдение класса формы и т.п.
...
protected:
int iCount;
pablic:
...
int __fastcall SetCount(const AnsiString&);
...

Реализация класса формы:
Код:
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//----------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
iCount = 0;//Устанавливаем начальное значение
}
//-----------------------------------------
void __fastcall TForm2::BtnBtn1Click(TObject *Sender){
(TForm *)Form1 = Form;
Form1->Edit1->Text = Edit1->Text;
Visible = false;
}
}
//-------------------------------------------
int __fastcall SetCount(const AnsiString& String){
 if(String=="Да")iCount++;
return iCount;
}

На второй форме две кнопки с надписями да или нет..:)
Реализация второй формы:
Код:
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//----------------------
void __fastcall TForm2::BtnBtn1Click(TObject *Sender){
 (TForm *)Form1 = Form;
Form1->SetCount(BtnBtn1->Caption);
Visible = false;
}
}
void __fastcall TForm2::BtnBtn2Click(TObject *Sender){
 (TForm *)Form1 = Form;
Form1->SetCount(BtnBtn2->Caption);
Visible = false;
}
}

Это самый примитивный способ - в рабочей программе лучше его не использовать. Для подобных целей существуют модальные диалоги, кнопки, статические переменные и соответственно более элегантные решения. Но как иллюстрация передачи данных вполне годится. Можно iCount объявить как public - тогда можно обойтись без вызова функции и передавать значение напрямую:
Код:
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
//----------------------
void __fastcall TForm2::BtnBtn1Click(TObject *Sender){
 (TForm *)Form1 = Form;
Form1->iCount++;
Visible = false;
}
}
void __fastcall TForm2::BtnBtn2Click(TObject *Sender){
 (TForm *)Form1 = Form;
Form1->iCount--;
Visible = false;
}
}

Но этого тоже надо избегать - если без передачи данных напрямую обойтись нельзя, то данные стоит скрывать в защищенной области а для передачи использовать функции.
1
20 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Kadet
Ну память выделил, а освободить. Потом из-за таких мелочей могут выходить большие глюки.
После закрытия формы:
delete Form2;


Ну попробуй...
Большие глюки могут выходить в тех случаях когда человек не понимает что делает - например про delete где-то слышал, а области видимости мимо пролетели.
:)

1.6K
21 апреля 2004 года
Kadet
101 / / 26.03.2003
Цитата:
Originally posted by kot_

Ну попробуй...
Большие глюки могут выходить в тех случаях когда человек не понимает что делает - например про delete где-то слышал, а области видимости мимо пролетели.
:)



Ну вот твой код:

#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//----------------------
void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
TForm2 *Form2 = new TForm2(Application);
Form2->Visible = true;
}

Память оператором new ты выделяешь, а где эта память освобождаться будет? А область видимости - ты что, хочешь сказать память сама освободится? Не путай статическое выделение памяти с динамическим. Если разницы не усваиваешь, прочитай "Для чайникoff".
Последнюю неделю только и делаю, что ошибки таких умников отлавливаю. Память выделяют и забывают, а потом - почему через час работы программа виснит? А искать их ой как нелегко, в чужой то проге. Вот и рекомендую для сохранения нервов себе и другим учитесь подчищать за собой.

1.9K
21 апреля 2004 года
nicohack
60 / / 17.04.2004
Kot_, а какую книжку посоветуешь прочесть и где ее можно заказать??? Еще слышал, что 8 buider есть. Стоит переходить или пока 6 хватит?
1
21 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Kadet


Ну вот твой код:

#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//----------------------
void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
TForm2 *Form2 = new TForm2(Application);
Form2->Visible = true;
}

Память оператором new ты выделяешь, а где эта память освобождаться будет? А область видимости - ты что, хочешь сказать память сама освободится? Не путай статическое выделение памяти с динамическим. Если разницы не усваиваешь, прочитай "Для чайникoff".
Последнюю неделю только и делаю, что ошибки таких умников отлавливаю. Память выделяют и забывают, а потом - почему через час работы программа виснит? А искать их ой как нелегко, в чужой то проге. Вот и рекомендую для сохранения нервов себе и другим учитесь подчищать за собой.


Тебе пальцами в растопырке по клаве стучать удобно? Тон сбавь - если ты считаешь что в коде не хватает оператора освобождения памяти - то плз, код в студию.

1
21 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack
Kot_, а какую книжку посоветуешь прочесть и где ее можно заказать???


Если совсем в начале - начни с Архангельского и попробуй поработать на разных компиляторах, не зацикливайся только на Борланде. Рекомендую так же "Стандартная библиотека С++ на примерах", ну а дальше смотря что тебе надо.

Цитата:
Originally posted by nicohack
Еще слышал, что 8 buider есть. Стоит переходить или пока 6 хватит?


:???: Я так понял что ты вроде как только начал - с чего же ты переходить собрался?:D
И для чего хватит?:D

1.9K
22 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by kot_


:???: Я так понял что ты вроде как только начал - с чего же ты переходить собрался?:D
И для чего хватит?:D


Все понял.:P
Я уже говорил, что пока тест хочу сделать. Так если 20 ? , то надо 20 форм сделать или ето можно сделать другим путем?

1
22 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack

Все понял.:P
Я уже говорил, что пока тест хочу сделать. Так если 20 ? , то надо 20 форм сделать или ето можно сделать другим путем?


Что 20? 20 форм или 20 - как введенное число? Или 20 раз вызвать одну и ту же форму? Или ту же форму но с разными вариациями?
Есть разные формы - соответственно разные методы работы с ними. Кроме того - можно рисовать окно средствами ОС, можно разработать свой класс, вариантов куча.

1.9K
22 апреля 2004 года
nicohack
60 / / 17.04.2004
Цитата:
Originally posted by kot_

Что 20? 20 форм или 20 - как введенное число? Или 20 раз вызвать одну и ту же форму? Или ту же форму но с разными вариациями?


Вот помоему последнее мне и нужно. Как это можно сделать
:???:

1
22 апреля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by nicohack

Вот помоему последнее мне и нужно. Как это можно сделать
:???:


Легко.
В открытой области класса второй формы объявляешь функцию такого вида
void __fastcall SetupView(const AnsiString& Label, const int& What=0);
к примеру. И соответственно меняешь код вызова формы:

 
Код:
TForm2 *Form2 = new TForm2(Application);
Form2->Form = this;
Form2->SetupView(Stroka,Identificator)
Form2->Visible = true;

Функция может быть определена примерно вот так:
Код:
void __fastcall TForm2::SetupView(const AnsiString& Label, const int& What){
Label1->Caption = Label;
switch(What){
 case 1:{
  TEdit *Edit1 = new TEdit(Form2);
  Edit1->Left = 100;
  Edit1->Top = 100;
  Edit1->Text = "Вот оно - программно созданный компонент";
  break;
 }
  ...
  ...
 default:{
  ...
 }
}
}

Ну и так далее. Все зависит от задачи и твоей фантазии.
1.9K
22 апреля 2004 года
nicohack
60 / / 17.04.2004
Я тебя еще не достал тупыми вопросами??? :))
Но мне правда очень интересно.
Я вот тут записную книжку делал. Последннее , что осталось организовать поиск. И тут компилятор выдал ошибку, мол НЕОПОЗНАННЫЙ СИМВОЛ Form1
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit4.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm4::Button1Click(TObject *Sender)
{

for(int i=1;i<10;i++)
{
!!! if(Form1->ListBox1->Items ==Edit1->Text) !!!(в этой строке)
{

ShowMessage("sdf");
}
}
}
//---------------------------------------------------------------------------
    5.2K
    23 апреля 2004 года
    EUGIX
    11 / / 05.10.2003
    Цитата:
    Originally posted by kot_

    Тебе пальцами в растопырке по клаве стучать удобно? Тон сбавь - если ты считаешь что в коде не хватает оператора освобождения памяти - то плз, код в студию.


    Ты зря то тут понты не кидай если хочешь кого-нибудь чему-нибудь научить то имей совесть делай это хотя бы грамотно. А вообще все что я тут прочитал хорошим тоном программирования не назовешь. И иногда это немного бесит когда вот такие ... учат новичков...

    5.2K
    23 апреля 2004 года
    EUGIX
    11 / / 05.10.2003
    Цитата:
    Originally posted by nicohack
    Я тебя еще не достал тупыми вопросами??? :))
    Но мне правда очень интересно.
    Я вот тут записную книжку делал. Последннее , что осталось организовать поиск. И тут компилятор выдал ошибку, мол НЕОПОЗНАННЫЙ СИМВОЛ Form1
    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit4.h"
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm4 *Form4;
    //---------------------------------------------------------------------------
    __fastcall TForm4::TForm4(TComponent* Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm4::Button1Click(TObject *Sender)
    {

    for(int i=1;i<10;i++)
    {
    !!! if(Form1->ListBox1->Items ==Edit1->Text) !!!(в этой строке)
    {

    ShowMessage("sdf");
    }
    }
    }
    //---------------------------------------------------------------------------


      Один клик по форме, и в инспекторе объектов ищешь Name как твоя форма называется. Возможно ты просто ее переименовал.

      1.9K
      23 апреля 2004 года
      nicohack
      60 / / 17.04.2004
      Цитата:
      Originally posted by EUGIX

      Один клик по форме, и в инспекторе объектов ищешь Name как твоя форма называется. Возможно ты просто ее переименовал.


      Я тоже вначале так подумал, посмотрел нейм. Но там все ОК.

      1
      23 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Код:
      void __fastcall TForm4::Button1Click(TObject *Sender)
      {
      (TForm *)Form1 = Form;
           for(int i=1;i<10;i++)
           {
       !!!       if(Form1->ListBox1->Items ==Edit1->Text) !!!(в этой строке)
              {

              ShowMessage("sdf");
              }
           }
      }
      1
      23 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Проверь внимнимательно что бы форма была добавлена в проект.
      Код:
      void __fastcall TForm4::Button1Click(TObject *Sender)
      {
      (TForm *)Form1 = Form;
           for(int i=1;i<10;i++)
           {
       !!!       if(Form1->ListBox1->Items ==Edit1->Text) !!!(в этой строке)
              {

              ShowMessage("sdf");
              }
           }
      }

      Если форма Form1 уже закрыта - то тогда необходимо создать ее заново.
      1
      23 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Цитата:
      Originally posted by EUGIX

      Ты зря то тут понты не кидай если хочешь кого-нибудь чему-нибудь научить то имей совесть делай это хотя бы грамотно. А вообще все что я тут прочитал хорошим тоном программирования не назовешь. И иногда это немного бесит когда вот такие ... учат новичков...


      А когда вот такие грамотеи налево и направо советы раздают то повидимому все ОК? Я кстати, так и не услышал - или не увидел - где должен находится в представленом мной коде оператор delete?
      Могу повторить фрагмент для тех кто в бронепоезде:

       
      Код:
      void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
      TForm2 *Form2 = new TForm2(Application);
      Form2->Visible = true;
      }
      1.9K
      23 апреля 2004 года
      nicohack
      60 / / 17.04.2004
      Спасибо, я просто нажал save all и проблема ушла.
      8)
      1.6K
      23 апреля 2004 года
      Kadet
      101 / / 26.03.2003
      Цитата:
      Originally posted by kot_

      А когда вот такие грамотеи налево и направо советы раздают то повидимому все ОК? Я кстати, так и не услышал - или не увидел - где должен находится в представленом мной коде оператор delete?
      Могу повторить фрагмент для тех кто в бронепоезде:
       
      Код:
      void __fastcall TForm1::BtnBtn1Click(TObject *Sender){
      TForm2 *Form2 = new TForm2(Application);
      Form2->Visible = true;
      }



      Ошибки:

      1. Во первых нет смысла выделять память, если эта форма в Project->Options->Forms находится в списке Auto-CreateForm. Тогда просто:
      Form2->Show();
      или
      Form2->ShowModal();
      //смотря какая нужна

      Отсюда мораль - в любом случае надо было посоветовать перенести в Auto-CreateForm. Если она уже там, в чем я проктически уверен, то не заниматься глупостями.

      2. Незачем было в ограниченной области инициализировать указатель на форму (ведь в Form1.cpp есть #include"Form2.h", где последней строчкой: extern PACKAGE TForm2 *Form2), тоесть он уже есть глобальный.

      3. При выходе из области действия указателя он теряется, тоесть вне функции в твоём случае с ним уже ничего не сделаешь. А если на форме TImage, или другие висомые компоненты. Память просто пропадает на глазах, с каждым открытием формы.

      Ну и если нужна действительно денамически выделяемая форма , то

      void __fastcall TForm1::Button1Click(TObject *Sender)
      {
      Form2 = new TForm2(Application);
      Form2->Visible = true;
      }

      на форме 2:
      //---------------------------------------------------------------------------

      void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
      {
      delete Form2;
      }
      //---------------------------------------------------------------------------

      Ито память небудет теряться если больше 1 формы по кнопке не открывать, иначе либо немного усложнить, либо см п.1.

      Ну и архив, если у УЧИТЕЛЯ КРИВЫЕ РУКИ.

      1
      23 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Рад за твои прямые руки, но к смею обратить внимание - предложение использовать Form2->Show()
      поступило в первом ответе на это сообщение. Так к слову.
      По поводу delete при вызове Close() - если тебе спокойней используй - только какую память ты при этом освобождаешь? Если память освобождается - то почему не больше 1 формы? Или как? И почему не показан в таком случае код закрытия первой формы? Или может в ней память освобождать не нужно? Тогда почему? Она ведь тоже создается динамически?
      Чго тогда так слабо? Надо было уже мне в ошибку поставить что при создании формы я оператор new не перегрузил...чего блин мелочиться. Память не выделил правильно. На билдер понадеялся. Куда нам темным. Слава богу есть еще люди способные на наши ошибки ткнуть.
      5.2K
      23 апреля 2004 года
      EUGIX
      11 / / 05.10.2003
      Цитата:
      Originally posted by kot_
      Рад за твои прямые руки, но к смею обратить внимание - предложение использовать Form2->Show()
      поступило в первом ответе на это сообщение. Так к слову.
      По поводу delete при вызове Close() - если тебе спокойней используй - только какую память ты при этом освобождаешь? Если память освобождается - то почему не больше 1 формы? Или как? И почему не показан в таком случае код закрытия первой формы? Или может в ней память освобождать не нужно? Тогда почему? Она ведь тоже создается динамически?
      Чго тогда так слабо? Надо было уже мне в ошибку поставить что при создании формы я оператор new не перегрузил...чего блин мелочиться. Память не выделил правильно. На билдер понадеялся. Куда нам темным. Слава богу есть еще люди способные на наши ошибки ткнуть.


      Да ты пойми что все это не просто какие - то наезды... дело в том что ты объясняешь простые вещи для человека, который я так понимаю только только начал учиться программить, очень замудреным языком. Если есть желание поумничать то наверное ты просто не туда попал, если же дело в том что ты сам так все понимаешь то наверное стоит задуматься над самообразованием а так в принципе все нормально и никто не хотел тебе ничего плохого сказать, а конструктивную критику нужно иногда понимать и принимать...

      1
      23 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Цитата:
      Originally posted by EUGIX

      Да ты пойми что все это не просто какие - то наезды... дело в том что ты объясняешь простые вещи для человека, который я так понимаю только только начал учиться программить, очень замудреным языком. Если есть желание поумничать то наверное ты просто не туда попал, если же дело в том что ты сам так все понимаешь то наверное стоит задуматься над самообразованием а так в принципе все нормально и никто не хотел тебе ничего плохого сказать, а конструктивную критику нужно иногда понимать и принимать...


      :angel: Хм...ничего не скажешь критика весьма конструктивна. :???: :???: :???:

      1.9K
      24 апреля 2004 года
      nicohack
      60 / / 17.04.2004
      А как можно скрыть форму, но чтобы программа работала? И как , чтобы при свертываниии появился значек в трее( и чтобы меню там организовано было). Все ли программы , которые в трее резидентны? Можно ли мне при моих небольших знаниях, сделать такую программу, например прогу для отрытия сидюка при нажатии определенной комбинации клавишь? Объяните пожалуйста в 2-х словах на маленьком примере назначение указателей.(мне кажется без них можно всегда обойтись или я ошибаюсь?) Так нужно ли освобождать память после того, как дочерняя форма закрыта? Как отсортировать listbox?
      И послений вопрос :) Как я уже говорил- я делал телефонную книжку. Там я сделал 2 Листбокса В первом ИМЯ , а во 2-м ТЕЛЕФОН. Как мне сделать так, чтобы можно было сохранить в текстовый файл Имя - телефон, а потом загрузить это дело в книжку? Спасибо, заранее.
      1
      24 апреля 2004 года
      kot_
      7.3K / / 20.01.2000
      Цитата:
      Originally posted by nicohack
      Так нужно ли освобождать память после того, как дочерняя форма закрыта?


      Память освобождать нужно - но ИМХО если уже предлагать чистить ее в самом классе формы, то почему тогда не борландовское

       
      Код:
      void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action){
      Action = caFree;
      }

      Работает кстати корректней.
      Цитата:
      Originally posted by nicohack

      А как можно скрыть форму, но чтобы программа работала? И как , чтобы при свертываниии появился значек в трее( и чтобы меню там организовано было). Все ли программы , которые в трее резидентны? Можно ли мне при моих небольших знаниях, сделать такую программу, например прогу для отрытия сидюка при нажатии определенной комбинации клавишь?
      Объяните пожалуйста в 2-х словах на маленьком примере назначение указателей.(мне кажется без них можно всегда обойтись или я ошибаюсь?) Как отсортировать listbox?
      И послений вопрос :) Как я уже говорил- я делал телефонную книжку. Там я сделал 2 Листбокса В первом ИМЯ , а во 2-м ТЕЛЕФОН. Как мне сделать так, чтобы можно было сохранить в текстовый файл Имя - телефон, а потом загрузить это дело в книжку? Спасибо, заранее.


      Может тебе проще найти книгу Архангельского?:) Ответы на эти вопросы там есть. Она есть в электронном виде - на форуме кто-то давал ссылки.
      Кстати, по моему listbox не очень удобен для телефонной книжки, сортировка его делается просто - ListBox1->Sorted = true;

      1.9K
      24 апреля 2004 года
      nicohack
      60 / / 17.04.2004
      Дай плс ссылку... Если вспомнишь
      1.6K
      26 апреля 2004 года
      Kadet
      101 / / 26.03.2003
      Цитата:
      Originally posted by kot_
      Рад за твои прямые руки, но к смею обратить внимание - предложение использовать Form2->Show()
      поступило в первом ответе на это сообщение. Так к слову.
      По поводу delete при вызове Close() - если тебе спокойней используй - только какую память ты при этом освобождаешь? Если память освобождается - то почему не больше 1 формы? Или как? И почему
      не показан в таком случае код закрытия первой формы? Или может в ней память освобождать не нужно? Тогда почему? Она ведь тоже создается динамически?
      Чго тогда так слабо? Надо было уже мне в ошибку поставить что при создании формы я оператор new не перегрузил...чего блин мелочиться. Память не выделил правильно. На билдер понадеялся. Куда нам темным. Слава богу есть еще люди способные на наши ошибки ткнуть.



      1.По поводу Form2->Show(), ты просто не смог обьяснить почему она у него не работает, и начал загонятся.
      2.Указатель Form2 один (в моём примере), глобальный в 2-х модулях. Память освобождается нужная. Почему при выделении памяти в моём примере одновременно открывать не более 1 формы, я думал и чайнику ясно (при открытии одновременно 2-х форм указатель на первую Form2 затрётся указателем на вторую Form2). А память чем выделяю, тем и удаляю ( new - delete ) и помоему это правильно.
      3. ПРИМЕР ВЫСЛАЛ ЗАЧЕМ? Всётки неполенился бы и скачал бы. Первая форма Auto-CreateForm, вторая нет. Вот и выводы делай.

      Надоело обьяснять правила хорошего тона в программировании. Я не кричу что я ас, но и учить новичков тому, чего сам незнаю не лезу. Ты либо правда нини, либо издеваешся. В любом случае надоело.
      Bye.

      Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
      Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог