Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2014, 12:36   #1
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию Как сделать два окна, название и описание?

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

Пример чисто символический, подскажите как это можно организовать и с помощью каких компонентов и команд?
sadovod1972 вне форума Ответить с цитированием
Старый 17.08.2014, 13:59   #2
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Компоненты - ListBox и Memo. Держишь 2 строковых массива для названий и описаний.
Формы создаются через "Новое -> Форма".
При старте нечто вроде
Код:
ListBox.Items = stringArray1;
В обработчике ListBox пишешь нечто типа
Код:
Form2.Memo1.Text = stringArray2[ListBox.ItemIndex];
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 17.08.2014, 19:11   #3
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию

Я наверно, не правильно описал то что нужно.
Окно программы должно быть одно, а внутри два listbox.
В одном список названий, а в другом описание этих названий.
sadovod1972 вне форума Ответить с цитированием
Старый 17.08.2014, 19:20   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для описания по крайней мере Memo намного лучше ListBox. А все действия по обновлению Memo делать в ListBox.OnClick если это о чем-то говорит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.08.2014, 00:13   #5
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию

Подскажите подробней пожалуйста.
Как написать такой код?
При выборе строки в listbox1, в listbox2 или memo появляется описание этой строки.
sadovod1972 вне форума Ответить с цитированием
Старый 18.08.2014, 11:18   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от sadovod1972 Посмотреть сообщение
Я наверно, не правильно описал то что нужно.
Окно программы должно быть одно, а внутри два listbox.
В одном список названий, а в другом описание этих названий.
Сначала он говорил, что две формы. А теперь форма одна. Автор, ты определишься или как?
короче вот код:
Код:
{На форме ListBox и Memo. Имена стандартные. Свойство ReadOnly("Только чтение") у Memo на True. Описание можешь хранить в файле или в массиве строк. }
//Cобытие onClick у ListBox
begin
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) + 'res/' + ListBox1.Items.Strings[ListBox1.ItemIndex] + '.txt'); //загружаем из файла. Файл в папке res в каталоге с программой. Имя файла: <выбранное в ListBox>.txt.
{для загрузки из массива просто присвоешь свойство Text и Memo.Lines в строку из массива.
Из ресурсов совсем другая история.}
end;
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.08.2014, 19:23   #7
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию

Спасибо за помощь, примерно это мне и нужно. Только мне нужно, чтобы описание хранилось в exe файле, а не в отдельном, а тут запрашивает файл из строки.
Я с массивами не работал и с ресурсами тоже, для меня это немного не понятно.

Если не сложно подскажите, как сделать так, чтобы описание хранилось в exe файле при компиляции?
sadovod1972 вне форума Ответить с цитированием
Старый 23.08.2014, 06:43   #8
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию

Вот файл ini из такой программы, подскажите что есть что в нем?
-------------------------------------------------
[Main]
Count = 4
Country1 = "Китай"
Country2 = "Монголия"
Country3 = "Россия"
Country4 = "США"

[Китай]
Count = 1
Description1 = "вот погодите немного, сами все увидите"

[Монголия]
Count = 2
Description1 = "а вот было время..."
Description2 = "у-у-у"

[Россия]
Count = 1
Description1 = "эта страна"

[США]
Count = 1
Description1 = "пиндосы"
----------------------------------------------------

Что значит Count = 4, Count = 1 и Description1 и 2?
sadovod1972 вне форума Ответить с цитированием
Старый 23.08.2014, 20:41   #9
sadovod1972
Пользователь
 
Регистрация: 09.07.2014
Сообщений: 12
По умолчанию

Подскажите, как этот код изменить так, чтобы на одной форме было два listbox с разным содержанием и описанием в memo?


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IniFiles;

type
TForm1 = class(TForm)
ListBox1: TListBox;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

var
ini: TIniFile;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i, c: Integer;
begin
ini := TIniFile.Create (ExtractFilePath (Application.ExeName) + 'страны.ini');

c := ini.ReadInteger ('Main', 'Count', 0);
ListBox1.Items.Clear;
for i := 1 to c do
ListBox1.Items.Add (ini.ReadString ('Main', 'Country'+IntToStr(i), ''));
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
i, c: Integer;
s: String;
begin
if ListBox1.ItemIndex > -1 then begin
s := ListBox1.Items[ListBox1.ItemIndex];
c := ini.ReadInteger (s, 'Count', 0);
Memo1.Lines.Clear;
for i := 1 to c do
Memo1.Lines.Add (ini.ReadString (s, 'Description'+IntToStr(i), ''));
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil (ini);
end;

end.

Вот файл ini от этого кода:

[Main]
Count = 4
Country1 = "Китай"
Country2 = "Монголия"
Country3 = "Россия"
Country4 = "США"

[Китай]
Count = 1
Description1 = "вот погодите немного, сами все увидите"

[Монголия]
Count = 2
Description1 = "а вот было время..."
Description2 = "у-у-у"

[Россия]
Count = 1
Description1 = "эта страна"

[США]
Count = 1
Description1 = "пиндосы"

Мне нужно два listbox на разных вкладках PageControl одной формы, как это правильно сделать?
sadovod1972 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать на странице два фона? CheCoder HTML и CSS 6 02.09.2012 22:14
Паскаль.Описание лабораторной работы. Помиогите сделать описание проги .какая формула что делает. Elimay25 Паскаль, Turbo Pascal, PascalABC.NET 1 01.03.2012 16:34
Проблема в html шаблоне, как сделать так?(описание внутри) Melekhin HTML и CSS 6 22.02.2012 18:29
Как грамотно сделать описание к проге? chandrasecar Общие вопросы Delphi 1 20.11.2008 22:23
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13