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

Ваш аккаунт

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

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

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

(Часть 2) Я начинающий, подскажите пожалуйста как...

1
15 декабря 2007 года
kot_
7.3K / / 20.01.2000
Данная тема предназначена для размещения вопросов начинающих программистов.
Прежде чем задать вопрос здесь, вы обязаны использовать
  1. Поиск по форуму, используя ключевые слова из вашего вопроса. Как правильно использовать поиск - читайте здесь
  2. Список наиболее часто задаваемых вопросов (FAQ)
  3. Поиск по предыдущей теме
Учитывайте пожалуйста, что вопрос который лично вам кажется сложным, в большинстве случаев на форуме рассмотрен достаточно подробно. Не соблюдение этих правил, приведет к тому, что ваше сообщение будет удалено, а вы получите нарушение.
Кроме того, прежде чем размещать сообщение, ознакомьтесь с правилами.
При размещении вопросов начинающих помимо указанной темы, будет выдаваться нарушение, а тема удаляться.
Страницы:
32K
17 декабря 2007 года
Ёжик
22 / / 14.12.2007
Если написать так Edit1->Text = Image1->Name;
То потом я не смогу пользоваться свойствами данной картинки например:
ХХХ->Visible=true; Нужно как-то оставить такую информацию о выбраной картинке, чтобы добратся до её свойств...
32K
17 декабря 2007 года
Ёжик
22 / / 14.12.2007
Как получить информацию о разрешени экрана, что бы потом можно было сразу загрузить картинки в соответствующем разришении.
1
17 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Если написать так Edit1->Text = Image1->Name;
То потом я не смогу пользоваться свойстваминно дай картинки например:
ХХХ->Visible=true; Нужно как-то оставить такую информацию о выбраной картинке, чтобы добратся до её свойств...


Ты не в состоянии прочесть что тебе пишут?
http://forum.codenet.ru/showpost.php?p=226028&postcount=1017
что тебе мешает поставить в приведенном коде вместо конкретного имени
Edit1->Text?

32K
17 декабря 2007 года
Ёжик
22 / / 14.12.2007
В даном коде:

TImage *a = dynamic_cast<TImage*>(fmMain->FindComponent("Image1"));
a->Visible = true;


Пишет ошибку: Undefined symbol 'fmMain'
489
17 декабря 2007 года
NeO_u
277 / / 11.10.2006
Цитата: Ёжик
В даном коде:

TImage *a = dynamic_cast<TImage*>(fmMain->FindComponent("Image1"));
a->Visible = true;


Пишет ошибку: Undefined symbol 'fmMain'



Логично вполне. fmMain - название главной формы, если не переименовывал форму, тогда, скорее всего название будет Form1

32K
17 декабря 2007 года
Ёжик
22 / / 14.12.2007
Теперь я получил пременную "а" типа TImage, нужно чтобы она была доступна с любого места программы. Так как записать её в Edit для дальнейшего использования не получается (пишет нельзя перевести в AnsiString) наверное нужно сделать её глобальной (если это возможно), как такое можно сделать?
1
17 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Теперь я получил пременную "а" типа TImage, нужно чтобы она была доступна с любого места программы. Так как записать её в Edit для дальнейшего использования не получается (пишет нельзя перевести в AnsiString) наверное нужно сделать её глобальной (если это возможно), как такое можно сделать?


Зачем ее делать глобальной? Находи по имени объект и объявляй указатель по месту использования.

32K
18 декабря 2007 года
Ёжик
22 / / 14.12.2007
А как это сделать. Можно пример кода...
1
18 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
А как это сделать. Можно пример кода...


Мне в третий раз его привести - или вы всеже соизволите обратить свое царское внимание сами?

32K
19 декабря 2007 года
Ёжик
22 / / 14.12.2007
Цитата: kot_
Мне в третий раз его привести - или вы всеже соизволите обратить свое царское внимание сами?



Kot ты неправильно понял мой вопрос. (Не спорю, в этом виноват только я).

TImage *a = dynamic_cast<TImage*>(Form1->FindComponent("Image1"));
a->Visible = true;

Этот код мне не подходит так как он присваивает переменной имя картинки "Image1", а я зарание не знаю какая именно картинка была нажата но мне нужна работать с её свойствами. Тоесть нужно чтобы при нажатии на саму картинку, гдето сохранялсь такая информация о ней, чтобы с любого места програмы можно было узнать какая именно картинка и поменять её свойства.

1
19 декабря 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Kot ты неправильно понял мой вопрос. (Не спорю, в этом виноват только я).

TImage *a = dynamic_cast<TImage*>(Form1->FindComponent("Image1"));
a->Visible = true;

Этот код мне не подходит так как он присваивает переменной имя картинки "Image1", а я зарание не знаю какая именно картинка была нажата но мне нужна работать с её свойствами. Тоесть нужно чтобы при нажатии на саму картинку, гдето сохранялсь такая информация о ней, чтобы с любого места програмы можно было узнать какая именно картинка и поменять её свойства.


Во-первых "с любого места" программы получать свойства картинки тебе совсем не надо. Все что тебе надо - это купить или скачать элементарный самоучитель - и хотябы ознакомиться с элементарными вещами. Договорились? потому как даже в теме для начинающих твои вопросы выглядят просто дико.
В твоем случае тебе необходимо присвоить всем твоим картинкам один и тот же обработчик события клика на нем и в нем уже обрабатывать то что тебе необходимо. Выглядеть это может следующим образом:

Код:
void __fastcall TForm1::Image1Click(TObject* Sender){
TImage *image = dynamic_cast<TImage*>(Sender);
String name = image->Name;
if(name == "Image1"){
image->Width = 100;
image->Height = 100;
}
else if(name == "Image2"){
 image->Width = 150;
...
}
...
//и так далее
}

если же картинка у тебя не видна - тогда тебе нужно организовать компонент который тебе будет ее показывать и обрабатывать его событие. В простейшем случае это может быть RadioButton или CheckBox - и тогда тебе надо обрабатывать клик на нем и искать тот компонент с которым ты хочешь работать. Для этого используется метод формы FindComponent или обращение к массиву комопнентов на форме через свойство формы Components т.е.
 
Код:
if(int i = 0;i < this->ComponentCount;i++){
 //и т.д.
}

пример использования я приводил в теме для начинающих, и на форуме это обсуждалось неоднократно. Надеюсь объяснил понятно и доступно?
1
23 декабря 2007 года
kot_
7.3K / / 20.01.2000
Пример работы с TImage в контексте твоей задачи. Программа естественно не имеет законченного вида, я реализовал простейший набор состояний - начало игры, пауза, выигрыш и проигрыш. Остальное доделывай сам. Так как комментариев в программе нет - выношу их сюда:
Во-первых, в папке программы должен находится текстовый файл sps.txt, содержащий список картинок, примерно такого вида:
Код:
.\\images\\0.jpg
.\\images\\1.jpg
.\\images\\2.jpg
.\\images\\3.jpg
.\\images\\1.jpg
.\\images\\5.jpg
.\\images\\6.jpg
.\\images\\7.jpg
.\\images\\8.jpg
.\\images\\2.jpg
.\\images\\8.jpg
.\\images\\11.jpg
.\\images\\12.jpg
.\\images\\6.jpg
.\\images\\3.jpg
.\\images\\7.jpg
.\\images\\12.jpg
.\\images\\0.jpg
.\\images\\5.jpg
.\\images\\11.jpg

он введен для простоты, каждая строка соответствует компоненту TImage и указывает откуда брать картинку. Это пример естественно, для если бы это была моя задача, я бы использовал библиотеку изображений, случайный алгоритм выбора и т.д. Но не важно.
Во вторых, использовать 20 компонентов TImage - это конечно глупость - но это я менять не стал, некогда, я просто убрал 20 остальных, которые у тебя содержали фоновую картинку :). Вобще то, для этой цели вполне достаточно одного компонента и на нем рисовать все необходимые картинки - но это просто немного усложняет саму программу - поэтому нах. В заголовочном файле, в закрытой части класса формы введено 5 переменных
 
Код:
private:    // User declarations
void __fastcall SetPictureNull(const String &file);
TImage *current;
TStringList *List;
bool bStateStart,bStateOption;
int iCountPic;

указатель на TImage, указатель на список строк, переменные состояния, и количество открытых пар.
Так же объявлена функция для закрытия всех картинок.
В конструкторе:
 
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
current = NULL;
List = new TStringList;
List->LoadFromFile("sps.txt");
bStateStart = bStateOption = false;
CountPic = 0;
}

думаю тут нечего объяснять.
В функции таймера
Код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int t = StrToInt(stTime->Caption);
if (t){
 stTime->Caption=IntToStr(t-1);
Timer1->Enabled=true;
}
else{
String file = ".\\images\\europic.jpg";
  SetPictureNull(file);
  Timer1->Enabled = false;
  imStart->Picture->LoadFromFile(".\\button\\start.jpg");
  CountPic = 0;
  ShowMessage("You are luser");
}
}

Тоже я думаю проблем никаких. Все переменные TTime выкинуты - они тут не нужны. В том числе и глобальная. Функция начала игры:
Код:
if(!Timer1->Enabled){
  String file = ".\\images\\europic.jpg";
  SetPictureNull(file);
  current = NULL;
  stTime->Caption="30";
  Timer1->Enabled = true;
  imStart->Picture->LoadFromFile(".\\button\\pause.jpg");
}
else if(Timer1->Enabled){
    Timer1->Enabled = false;
  imStart->Picture->LoadFromFile(".\\button\\start.jpg");
}

если таймер включен - он выключается - пауза. "Начать игру заново" - сделаешь сам.
И собственно функция клика по картинкам:
Код:
void __fastcall TForm1::im30Click(TObject *Sender)
{
 //
 if(!Timer1->Enabled)return;
 TImage *tmp = dynamic_cast<TImage*>(Sender);
 if(!current){
  current = tmp;
  current->Picture->LoadFromFile(List->Strings[current->Tag]);
 }
 else if(current == tmp){
  return;
 }
 else if(current->Tag != tmp->Tag){
  current->Picture->LoadFromFile(".\\images\\europic.jpg");
  current = NULL;
 }
 else if(current->Tag == tmp->Tag){
  tmp->Picture->LoadFromFile(List->Strings[current->Tag]);
   current = NULL;
   CountPic+=2;
   if(CountPic ==20){
   ShowMessage("You are Win!!!");
    Timer1->Enabled = false;
   }
 }

}

Естественно, свойство Tag у картинок должно быть установлено. Функции анимации кнопок и закрытия формы - не привожу разберешься сам. Это конечно не твои 1600 строк кода, но тоже не плохо :)
1
23 декабря 2007 года
kot_
7.3K / / 20.01.2000
Сам исходник:
здесь
35K
24 декабря 2007 года
chubukov
1 / / 24.12.2007
Привет!!!
Чтобы можно было использовать созданный мной (в Borland C++ 2007) ActiveX, нужно иметь .LIC-файл! Каким образом его создать? :confused:
1
03 января 2008 года
kot_
7.3K / / 20.01.2000
http://rsdn.ru/forum/message/965112.1.aspx
30K
04 января 2008 года
Biki
9 / / 26.10.2007
Подскажите пожалуйста как узнать открыт ли лоток привода?
18K
12 января 2008 года
angelino4ka
13 / / 22.12.2006
Здравствуйте.
Решила написать простенькую игрушку.
Добавляю 2-а компонента checkbox.

первый - со свойством Caption - атака.
второй - со свойством Caption - защита.

Добавляю кнопку button1.
Добавляю memo1.

Чекаем первый чек бокс и жмём button1.
В мемо1 должно появится слово - атака. - значение Caption чекбокса1.

Я делала так:

 
Код:
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked);
CheckBox2->Visible=false;
Button1->Visible=true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Text="Atack";
}


и так для второго чек бокса и поверх кнопки добавляла ещё одну кнопку.
Хочется научиться делать именно с одной кнопкой.
Есть ли какая нибудь литература по компонентам борланд,посоветуйте пожалуйсто.Либо подскажите здесь.

С Уважением!
1
12 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: angelino4ka
Здравствуйте.
Решила написать простенькую игрушку.
Добавляю 2-а компонента checkbox.

первый - со свойством Caption - атака.
второй - со свойством Caption - защита.

Добавляю кнопку button1.
Добавляю memo1.

Чекаем первый чек бокс и жмём button1.
В мемо1 должно появится слово - атака. - значение Caption чекбокса1.

Я делала так:

 
Код:
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked);
CheckBox2->Visible=false;
Button1->Visible=true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Text="Atack";
}


и так для второго чек бокса и поверх кнопки добавляла ещё одну кнопку.
Хочется научиться делать именно с одной кнопкой.
Есть ли какая нибудь литература по компонентам борланд,посоветуйте пожалуйсто.Либо подскажите здесь.

С Уважением!


Обработчик CheckBox1Click присваиваете обоим компонентам CheckBox.
Когда выбран первый - скрывается второй и становится видна кнопка действия (КД)(Button1) - по умолчанию она скрыта. То же самое - если выбран второй. Если не выбран ни один - показываются оба и КД скрывается.

Код:
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
Button1->Visible = true;
if (CheckBox1->Checked){
CheckBox2->Checked = false;
CheckBox2->Visible=false;
}
else if(CheckBox2->Checked){
 CheckBox1->Checked = false;
 CheckBox1->Visible=false;

 }
else if(!CheckBox1->Checked||!CheckBox2->Checked){
 CheckBox2->Visible = true;
  CheckBox1->Visible = true;
Button1->Visible = false;
}

}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(CheckBox1->Checked)
Memo1->Lines->Text=CheckBox1->Caption;
else if(CheckBox2->Checked)
Memo1->Lines->Text=CheckBox2->Caption;

}

З.Ы. Убедительная просьба - подобные вопросы размещать ТОЛЬКО!!!! в теме для начинающих.
32K
17 января 2008 года
Ёжик
22 / / 14.12.2007
Подскажите какой лутше пользоваться программой для создания инсталях? И где её можна взять?
1
17 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Подскажите какой лутше пользоваться программой для создания инсталях? И где её можна взять?


Какой умеете такой и пользуйтесь. Лучше, хуже - все зависит от того, по каким параметрам оценивать. В энтерпрайз версию билдера входит (помоему) InstallShild Express - или найдите доступный и понятный для вас в сети.

32K
18 января 2008 года
Ёжик
22 / / 14.12.2007
А подскажите ка, с помощью каких функций можно издавать системным динамиком звуки разных частот и длительности.

(Извеняюсь если эта инфа уже выкладена на форуме (киньте ссылочку), но я не нашол).
35K
18 января 2008 года
shilo
8 / / 15.01.2008
Цитата: Ёжик
А подскажите ка, с помощью каких функций можно издавать системным динамиком звуки разных частот и длительности.



BOOL Beep(
DWORD dwFreq, // частота звука в герцах
DWORD dwDuration // продолжительность звука в миллисекундах
);

8.2K
20 января 2008 года
Pelican
115 / / 16.06.2007
Цитата: Ёжик
Подскажите какой лутше пользоваться программой для создания инсталях? И где её можна взять?


CreateInstall Сайт не помню. Ищи в Гугле - найдешь 100%. Лучше чем InstallShield и Wise. Говорю опираясь на личный опыт. Сам пользуюсь версией 3.5 Free. Если хочешь попробуй все 3 программы.

1.8K
20 января 2008 года
Arkady
153 / / 18.12.2007
А мне нравится InnoSetup, тоже бесплатное и удобное) с отличной хелпой и примерами) Использую 5ую версию
32K
21 января 2008 года
Ёжик
22 / / 14.12.2007
Подскажите пожалуйста как можно посимвольно считывать текст с Memo поля, чтобы отдельно проверять каждый символ?
1
21 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
Подскажите пожалуйста как можно посимвольно считывать текст с Memo поля, чтобы отдельно проверять каждый символ?



Код:
String s = Memo1->Text;
int i = s.Length()
while(i){
 switch(s[i--]){
  case 'a': ...
  case 'A': ...
  case 'b':...
 ....
 default:
 ...
 }
}

для поиска в строке используйте метод класса Pos
 
Код:
if(Memo1->Text.Pos("a")){
 ...
}
else{
 ShowMessage("Нет такой буквы!!!");
}
32K
23 января 2008 года
Ёжик
22 / / 14.12.2007
Как програмно запускать файлы? И как можно указывать путь к ним?
11
24 января 2008 года
oxotnik333
2.9K / / 03.08.2007
HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
32K
24 января 2008 года
Ёжик
22 / / 14.12.2007
Цитата: oxotnik333
HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);




:confused: А можна по русски? Просто пример запуска ексешного файла, с указанием адреса к ниму...

1
24 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
:confused: А можна по русски? Просто пример запуска ексешного файла, с указанием адреса к ниму...


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

36K
26 января 2008 года
HellSatan
1 / / 23.01.2008
скажите пожалуста как копировать при нажатии кнопки русскоязычный текст из TMemo в Clipboard
1
26 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: HellSatan
скажите пожалуста как копировать при нажатии кнопки русскоязычный текст из TMemo в Clipboard



аттскому сотоне рекомендуется тщательно и внимательно читать хелп, прежде чем лезть с вопросом на форум. И использовать поиск по форуму.

 
Код:
Clipboard()->SetTextBuf(Memo1->Text.c_str());
32K
26 января 2008 года
Ёжик
22 / / 14.12.2007
А как теперь посимвольно записать в Memo поле. Тоесть записівать по одному символу в Мемо, что бі оно не заменяло то что есть в Мемо а дописівало?
1
26 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Ёжик
А как теперь посимвольно записать в Memo поле. Тоесть записівать по одному символу в Мемо, что бі оно не заменяло то что есть в Мемо а дописівало?


 
Код:
String ss = "test";
Memo1->Lines->Add(ss);

 
Код:
String ss = "test";
Memo1->Text += ss;
8.8K
29 января 2008 года
Se AD WMD
165 / / 10.01.2007
Как в одном приложении совместить TIdTCPClient и TIdTCPServer? Пишу небольшую програмку-обмен месежами по сети и надо чтоб каждая копия работала и как клиент и как сервер (Т.е. самому себе меседж штоб можно было послать)
З.Ы. вариант с TClientSocket и TServerSocket неустраивает абсолютно.
1
29 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Se AD WMD
Как в одном приложении совместить TIdTCPClient и TIdTCPServer? Пишу небольшую програмку-обмен месежами по сети и надо чтоб каждая копия работала и как клиент и как сервер (Т.е. самому себе меседж штоб можно было послать)
З.Ы. вариант с TClientSocket и TServerSocket неустраивает абсолютно.


В чем разница, и в чем проблема заключаеться?

8.8K
29 января 2008 года
Se AD WMD
165 / / 10.01.2007
Проблема заключается в том, что если делаем 2 приложения (клиент отдельно, сервер отдельно), то сервер обрабатывает сообщения нормально, но если обе компоненты (TIdTCPClient и TIdTCPServer) в одном приложении - ничего не хочет работать, а TClientSocket и TServerSocket неустраивают, т.к. препод сказал надо на Indy.
1
29 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Se AD WMD
Проблема заключается в том, что если делаем 2 приложения (клиент отдельно, сервер отдельно), то сервер обрабатывает сообщения нормально, но если обе компоненты (TIdTCPClient и TIdTCPServer) в одном приложении - ничего не хочет работать, а TClientSocket и TServerSocket неустраивают, т.к. препод сказал надо на Indy.


"ничего работать не хочет" - [SIZE="7"][COLOR="Red"]Я НЕ ЗНАЮ ТАКОЙ ОШИБКИ!!! НЕ ЗНАЮ!!![/COLOR][/SIZE] И знать не хочу! Задавайте нормально вопрос - если вы хотите что бы вам нормально отвечали.

8.8K
29 января 2008 года
Se AD WMD
165 / / 10.01.2007
разобрался, чтоб на одной форме всё уживалось надо было BoundPort поставить в 0 для TIdTCPClient.

P.S.
Цитата:
"ничего работать не хочет" - Я НЕ ЗНАЮ ТАКОЙ ОШИБКИ!!! НЕ ЗНАЮ!!!

, а я знаю и постоянно с ней сталкиваюсь:)

32K
29 января 2008 года
Ёжик
22 / / 14.12.2007
Цитата: shilo
BOOL Beep(
DWORD dwFreq, // частота звука в герцах
DWORD dwDuration // продолжительность звука в миллисекундах
);



Если ввожу первый и второй параметр = 1000 "Beep(1000, 1000);"- не работает, почему? Пробывал ставить разные значения частоты, всё равно не выходит.

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