Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
1

Нужно оптимизировать код

18.05.2016, 21:34. Показов 489. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
    if TreeView1.Selected.Text = 'Брестская область ' then
    begin
       brest.Visible := True ;
       vitebsk.Visible := False;
       grodno.Visible := False;
       mogilev.Visible := False;
       minsk.Visible := False;
       bihov.Visible := False;
    end;
знаю что можно как-то через цикл, но не знаю как это реализовать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2016, 21:34
Ответы с готовыми решениями:

Оптимизировать код
Можно как-то оптимизировать код чтобы не перебирать ComboBox9 с помощью if .... then.... else ...

Оптимизировать код
Найдите ошибку если не сложно. unit Unit1; interface uses Windows, Messages, SysUtils,...

Оптимизировать код
Более опытные товарище помогите мне оптимизировать код, а то он какой то очень громоздкий...

Оптимизировать код
Всем привет. Подскажите пожалуйста как можно изменить программный код, что бы программа не зависала...

15
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
18.05.2016, 21:57 2
что оптимизировать?
что именно нужно через цикл?
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
18.05.2016, 22:01  [ТС] 3
Delphi
1
2
3
4
5
6
brest.Visible := True ;
       vitebsk.Visible := False;
       grodno.Visible := False;
       mogilev.Visible := False;
       minsk.Visible := False;
       bihov.Visible := False;
qwertehok, выполнить эти действия
0
16 / 15 / 4
Регистрация: 30.10.2014
Сообщений: 175
18.05.2016, 22:03 4
Программер010, вы хотите скрыть ВСЕ кнопки на форме?
Delphi
1
2
3
for i := 0 to ComponentCount - 1 do   
         if Components[i] is TButton then
           (Components[i] as TButton).visible := false;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
18.05.2016, 22:04 5
а это кнопки?

Цитата Сообщение от Программер010 Посмотреть сообщение
выполнить эти действия
вы их выполнили, что же еще надо?
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
18.05.2016, 22:07  [ТС] 6
maybeTM, да

Добавлено через 1 минуту
qwertehok, это скрытие точек на карте и если я все точки размещу то код получится очень грамоздким, из-за этого я прошу вас помочь.
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
18.05.2016, 22:13 7
нужно заходить с другого конца
должна иметься некоторая структура данных
например
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
TMyItem = class()
  text:string;
  city:string;
  button:TButton;
end;
 
TMyItems =  class(TObjectList)
...
end;
 
var 
  items:TMyItems;
заполняем пункты списка Items, в том числе ссылками на кнопки
ПО ЭТИМ ПУНКТАМ строим treeView
и каждому node заполняем поле Data ссылкой на соответствующий Item

тогда при клике достаточно пробежать по Items и если это не кликнутый item то кнопку гасим, иначе - показываем
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
18.05.2016, 22:25  [ТС] 8
krapotkin, можете показать на примере моего случая?
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
18.05.2016, 22:29 9
для ответа на вопрос нужна конкретика
что на экране, что в дереве, что должно происходить по клику
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
18.05.2016, 22:35  [ТС] 10
krapotkin, в дереве области, а ветвях города. При нажатии на область становится видимым выделение этой области на карте. А при нажатии на город появляется точка на карте. А при нажатии на другую область или город нужно чтобы точка или выделение предыдущей области или города пропала и появилось та на которую ты нажал.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
18.05.2016, 22:48 11
у вас должны быть массивы - области, у области имя и массив городов, с координатами
тогда имя области выводим в Treeview, по клику перебираем города области и выводим точки по координатам
0
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 102
18.05.2016, 22:54  [ТС] 12
qwertehok, мне нужно только как-то сделать через цикл, скрытие предыдущих картинок и точек
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
18.05.2016, 23:07 13
создать систему классов
лучше в отдельном юните
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
uses Classes,Types,Contnrs;
TCity=class
  Name:string;
  crd:TPoint;
end;
TCities=class(TObjectList)
private
  function GetItems(index:integer):TCity;
  procedure SetItems(index:integer; value:TCity);
public
  property Items[index:integer]:TCity read GetItems write SetItems; default;
end;
 
TRegion=class
  name:string;
  Cities:TCities;
  constructor Create;
  destructor Destroy; override;
end;
TRegions=class(TObjectList)
 аналогично TCities
  property Items[index:integer]:TRegion read GetItems write SetItems; default;
end;
 
...
implementation
uses SysUtils;
 
procedure TCities.SetItems(index:integer; value:TCity);
begin
  inherited Items[index] := value;
end;
function TCities.GetItems(index:integer):TCity;
begin
  result := inherited Items[index] as TCity;
end;
 
constructor TRegion.Create;
begin
  Cities:=TCities.Create(True);
end;
destructor TRegion.Destroy;
begin
  FreeAndNil(Cities);
  inherited Destroy;
end;
в форме делаем поле regions:TRegions
и заполняем его

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure Tform1.FormCreate(...);
var r:TRegion;
  c:TCity;
begin
  Regions:=TRegions.Create(true);
  r:=TRegion.Create;
  r.name := 'Свердловская область';
  Regions.Add(r);
  c:=TCity.Create;
  c.Name := 'Екатеринбург';
  c.Crd:=Point(100,250);
  r.Cities.Add(c);
  c:=TCity.Create;
  c.Name:='Нижний Тагил';
  c.Crd:=Point(100,100);
 
  r:=Tregion.Create;
  r.name:='Тюменская область';
  Regions.Add(r);
  c:=TCity.Create;
  c.name:='Тюмень';
  c.Crd := Point(200,250);
  r.Cities.add(c);
  c.City := 'Талица';
  c.Crd := Point(180,220);
  r.Cities.Add(c);
  CreateTree();
end;
procedure Tform1.FromDestroy(...);
begin
   FreeAndNil(Regions);
end;
вот теперь у нас есть структура данных. заполненная.
по ней надо строить дерево
там написана функция CreateTree. Ее надо создать
а уж потом решать вопрос с картой
0
northener
19.05.2016, 00:41
  #14

Не по теме:

Цитата Сообщение от Программер010 Посмотреть сообщение
мне нужно только как-то сделать через цикл, скрытие предыдущих картинок и точек
Цитата Сообщение от krapotkin Посмотреть сообщение
создать систему классов
Неасилит!

0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
19.05.2016, 07:52 15
проблемы негров шерифа не очень волнуют
программа и так и так будет немаленькой
только так она будет еще и правильной )))
0
qwertehok
19.05.2016, 08:47     Нужно оптимизировать код
  #16

Не по теме:

а вот если осилит, то получит кроме "5" еще и экспу и левелап :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2016, 08:47

Как оптимизировать код
Помогите с "оптимизацией"... Подскажите как проще реализовать такой код? Знаю, что есть более...

Немного упростить (оптимизировать) код
Здравствуйте! Помогите пожалуйста упростить этот код, или составить более грамотно: unit...

Оптимизировать код с Паскаля на Делфи
Даны два числа a и b.Найти среднее арифметическое: (a+b)/2 !!!!! Var a,b,c:integer; begin...

Нужно оптимизировать код
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru