Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
WPF

Оптимизация визуальной части

25.02.2023, 01:58. Показов 1958. Ответов 31

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста оптимзировать код.
XML
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
<Window x:Name="window" x:Class="Контроль_поручений.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Контроль_поручений"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="835" MinWidth="835">
    <Window.Resources>
        <local:MarginConverter x:Key="marginConverter"></local:MarginConverter>
        <local:SizeConvertor x:Key="sizeConverter"></local:SizeConvertor>
        <local:FontSiz1Convertor x:Key="fontSize1Converter"></local:FontSiz1Convertor>
        <local:FontSiz2Convertor x:Key="fontSize2Converter"></local:FontSiz2Convertor>
        <local:FontSiz3Convertor x:Key="fontSize3Converter"></local:FontSiz3Convertor>
    </Window.Resources>
    <DockPanel>
        <Border BorderThickness="0,0,0,3"  CornerRadius="3" Height="50" DockPanel.Dock="Top" BorderBrush="Black" Background="White">
            <Button HorizontalAlignment="Left" VerticalAlignment="Center" Width="140" Height="40" Margin="5,0,0,0" Click="Button_Click"></Button>
        </Border>
        <Grid Width="0" Name="LeftPanel" Background="#FFD43131" HorizontalAlignment="Left" >
        </Grid>
        <ListBox x:Name="MainListBox" ItemsSource="{Binding NoteClasses}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Grid.IsSharedSizeScope="True" ScrollViewer.CanContentScroll="False">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="4" Grid.IsSharedSizeScope="True" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <local:Note HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  FontSize2="{Binding ActualWidth, Converter={StaticResource fontSize2Converter}, ElementName=MainListBox}" FontSize3="{Binding ActualWidth, Converter={StaticResource fontSize3Converter}, ElementName=MainListBox}" FontSize1="{Binding ActualWidth, ElementName=MainListBox, Converter={StaticResource fontSize1Converter}}" Width="Auto" Height="Auto"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </DockPanel>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class MainWindow : Window
    {
        public BackGroundWorker BackGroundWorker { get; set; }
        public MainWindow()
        {
            BackGroundWorker = new BackGroundWorker();   
            InitializeComponent();
            DataContext = BackGroundWorker;
            
            //new Task(()=> { Thread.Sleep(10000); Dispatcher.Invoke(new Action(() => NoteClasses.RemoveAt(3)));}).Start(); 
        }
        public event PropertyChangedEventHandler PropertyChanged;
        int LeftPanelSize = 150;
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class BackGroundWorker : UserControl, INotifyPropertyChanged
    {
 
        public ObservableCollection<NoteClass> NoteClasses { get; set; }
        public BackGroundWorker()
        {
            NoteClasses = JsonSerializer.Deserialize<ObservableCollection<NoteClass>>(File.ReadAllText($@"1.json"));
            //NoteClasses= new ObservableCollection<NoteClass>(NoteClasses.Take(20));
        }
 
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string prop = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
        }
    }
C#
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
public class FontSiz1Convertor : IValueConverter
    {
        public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int whidth = 150 + (int)(System.Convert.ToDouble(value) - 160.8 * 5) / 5;
            return 9 + 0.046 * (whidth - 150);
        }
 
        public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }
    }
    public class FontSiz2Convertor : IValueConverter
    {
 
        public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int whidth = 150 + (int)(System.Convert.ToDouble(value) - 160.8 * 5) / 5;
            return 8 + 0.046 * (whidth - 150);
        }
 
        public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }
    }
    public class FontSiz3Convertor : IValueConverter
    {
 
        public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int whidth = 150 + (int)(System.Convert.ToDouble(value) - 160.8 * 5) / 5;
            return 12 + 0.046 * (whidth - 150);
        }
 
        public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return null;
        }
    }
XML
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
<UserControl x:Class="Контроль_поручений.Note"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Контроль_поручений" xmlns:sys="clr-namespace:System;assembly=mscorlib"
             mc:Ignorable="d" Height="auto" Width="auto" DataContextChanged="UserControl_DataContextChanged" SizeChanged="UserControl_SizeChanged">
    <Border BorderBrush="#FFFF1B1B" BorderThickness="3" Height="auto" Width="auto" CornerRadius="20" Name="Border1">
        <Border.Background>
            <RadialGradientBrush>
                <GradientStop Color="#FF6877C8" Offset="1"/>
                <GradientStop Color="White"/>
            </RadialGradientBrush>
        </Border.Background>
        <DockPanel Margin="0,0,0,10" ScrollViewer.VerticalScrollBarVisibility="Auto">
            <Grid Margin="0" DockPanel.Dock="Top">
                <StackPanel>
                <Label HorizontalAlignment="Center" Margin="0,5,0,0" Height="auto" Width="auto" VerticalAlignment="Top" FontSize="{Binding FontSize1, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Content="ФИО исполнителя" Padding="0" />
                <TextBox Margin="0,3,0,0" Height="auto" Width="auto" FontSize="{Binding FontSize3, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Text="{Binding NoteC.PerformerName, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Padding="0" FontWeight="Bold" Background="{x:Null}" BorderBrush="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Stretch" />
                </StackPanel>
                <Image Height="22" Width="22" Margin="0,0,10,0" HorizontalAlignment="Right" VerticalAlignment="Top"/>
            </Grid>
            <Grid Background="#00000000" Margin="0,5,0,0" VerticalAlignment="Top" IsEnabled="True" DockPanel.Dock="Top" >
                <Label HorizontalAlignment="Left" Margin="0" VerticalAlignment="Top" Height="auto" Width="auto" HorizontalContentAlignment="Stretch" FontSize="{Binding FontSize2, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Content="Дата создания" FontWeight="Bold"/>
                <DatePicker VerticalAlignment="Top" Margin="0,3,0,0" Width="auto" FontSize="{Binding FontSize2, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Height="auto" BorderBrush="transparent" SelectedDate="{Binding NoteC.Date_start, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" SelectedDateChanged="DatePicker_SelectedDateChanged" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Stretch" MinHeight="10" ToolTip="какого числа назначено" BorderThickness="0" Padding="0"/>
            </Grid>
            <Grid Margin="0" Height="auto" DockPanel.Dock="Top">
                <Label HorizontalAlignment="Left" Margin="0,0,0,-0.4" VerticalAlignment="Bottom" Height="auto" Width="auto" HorizontalContentAlignment="Stretch" FontSize="{Binding FontSize2, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" FontWeight="Bold" Content="Дата окончания" Grid.ColumnSpan="2"/>
                <DatePicker VerticalAlignment="Top" Width="auto" FontSize="{Binding FontSize2, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" Height="auto" BorderBrush="transparent" SelectedDate="{Binding NoteC.Date_end, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" SelectedDateChanged="DatePicker_SelectedDateChanged" HorizontalAlignment="Right" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" MinHeight="10" ToolTip="до кого числа должно быть исполнено" Margin="0,3,0,0" Padding="0" Grid.Column="1" BorderThickness="0"/>
            </Grid>
            <TextBox TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="{Binding FontSize1, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" FontWeight="Bold" Text="{Binding NoteC.NumbDoc, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" ToolTip="номер докуметна" Margin="0" Padding="0" Background="{x:Null}" BorderBrush="{x:Null}" DockPanel.Dock="Top"/>
            <TextBox Margin="7,0,7,0" Height="auto" Width="auto" Text="{Binding NoteC.NoteS, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" TextWrapping="Wrap" FontSize="{Binding FontSize1, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Note}}}" ScrollViewer.VerticalScrollBarVisibility="Auto" TextAlignment="Justify" ToolTip="краткое содержание документа" Background="{x:Null}" BorderBrush="{x:Null}" HorizontalContentAlignment="Stretch" HorizontalAlignment="Center" SpellCheck.IsEnabled="True" VerticalContentAlignment="Stretch" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"/>
        </DockPanel>
    </Border>
</UserControl>
C#
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 public partial class Note : UserControl, INotifyPropertyChanged
    {
        public NoteClass NoteC
        {
            get { return (NoteClass)this.GetValue(NoteCProperty); }
            set { this.SetValue(NoteCProperty, value); }
        }
        public double FontSize1
        {
            get { return (double)this.GetValue(FontSize1Property); }
            set { this.SetValue(FontSize1Property, value); }
        }
        public double FontSize2 
        {
            get { return (double)this.GetValue(FontSize2Property); }
            set { this.SetValue(FontSize2Property, value); }
        }
        public double FontSize3
        {
            get { return (double)this.GetValue(FontSize3Property); }
            set { this.SetValue(FontSize3Property, value); }
        }
        public static readonly DependencyProperty NoteCProperty
    = DependencyProperty.Register("NoteC", typeof(NoteClass), typeof(Note));
        public static readonly DependencyProperty FontSize1Property
    = DependencyProperty.Register("FontSize1", typeof(double), typeof(Note));
        public static readonly DependencyProperty FontSize2Property
    = DependencyProperty.Register("FontSize2", typeof(double), typeof(Note));
        public static readonly DependencyProperty FontSize3Property
    = DependencyProperty.Register("FontSize3", typeof(double), typeof(Note));
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        public Note()
        {
            InitializeComponent();
            
        }
 
        private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
           
        }
 
        private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if(DataContext is NoteClass)
            NoteC = (NoteClass)DataContext;
        }
        private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            Height = ActualWidth;
            //double whidth = this.ActualWidth;
            //FontSize1 = 9 + 0.046 * (whidth - 150);
            //FontSize2 = 8 + 0.046 * (whidth - 150);
            //FontSize3 = 12 + 0.046 * (whidth - 150);
        }
        public void OnPropertyChanged([CallerMemberName] string prop = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
        }
    }
Когда в NoteClasses 160 элементов, то появляються лаги. Лаги вообще начинаються с 25-30 элементов

Добавлено через 3 часа 51 минуту
Может быть как-то можно заставить в отдельном потоке прорисовывать мои заметки?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2023, 01:58
Ответы с готовыми решениями:

Применение визуальной части в Windows Forms
Автор: darkExpressI2P Название темы: Применение визуальной части в Windows Forms. Цель работы: Создание нестандартной кнопки (control)...

Оптимизация визуальной новеллы
Я делаю визуальную новеллу (интерактивная книга, картинка + текст внизу + музыка), у меня несколько вопросов 1) Я храню все (текстовый...

Разработчик JS для написания визуальной части Big Data платформы (Рязань)
Ищу Java Script программиста(ов) для разработки фронта. Универсальная Big Data платформа с очень мощной архитектурой. Разработка...

31
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 10:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mojor Посмотреть сообщение
стало в разы лучше
Репозиторий так до конца и не исправили.
Папка bin не должна включаться в проект.
А файл 1.json, напротив, надо включить в проект.
Для включения/исключения в проект ресурса- ПКМ на ресурсе в Обозревателе Решения и в контекстном меню выбираете соответсвующий пункт.


0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 10:10
Mojor, Для проверки, правильно ли всё указано в проекте: выйдете из Студии, откройте в проводнике папку Решения, пройдитесь по всем папкам проектов и в каждом удалите папки bin и obj.
Потом опять открываете Решение в Студии и сразу запускаете его на исполнене.
Если всё правильно - оно запустится без ошибок и со всеми нужными данными.
0
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
27.02.2023, 12:36  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Mojor, Для проверки, правильно ли всё указано в проекте: выйдете из Студии, откройте в проводнике папку Решения, пройдитесь по всем папкам проектов и в каждом удалите папки bin и obj.
Потом опять открываете Решение в Студии и сразу запускаете его на исполнене.
Если всё правильно - оно запустится без ошибок и со всеми нужными данными.
Сделал.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 13:07
Цитата Сообщение от Mojor Посмотреть сообщение
Сделал.
Вот сейчас норм.
У меня запускается сразу после клонирования.
Как по проблеме - текущая реализация устраивает?

Если да, то давайте начнём устранять другие косяки.

Добавлено через 2 минуты
1) Пространство имён Контроль_поручений переименуйте в OrdersControl.

Добавлено через 6 минут
2) Добавьте в проект (лучше даже в отдельный проект типа "Библиотека классов для WPF") вот эти классы: Простые реализации для тем на форуме

Добавлено через 1 минуту
3) Класс NoteClass переобъявите так:
C#
12
13
    public class Order: BaseInpc
    {
Добавлено через 2 минуты
4) Свойства в этом классе объявляйте так:
C#
14
15
16
17
18
19
        private DateTime _startTime;
        public DateTime StartTime
        { 
            get => _startTime;
            set => Set(ref _startTime, value);
        }
Добавлено через 7 минут
5) Класс BackGroundWorker переписываете так:
C#
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public class OrdersSourceViewModel : BaseInpc
    {
 
        public ObservableCollection<Order> Orders { get; }
        public OrdersSourceViewModel()
        {
            Orders = new(JsonSerializer.Deserialize<Order[]>(File.ReadAllText($@"1.json")));
            //NoteClasses= new ObservableCollection<NoteClass>(NoteClasses.Take(20));
            Orders.Insert(0, new Order());
        }
 
        private Order? _selectedOrder;
        public Order? SelectedOrder { get => _selectedOrder; set => Set(ref _selectedOrder, value); }
    }
Добавлено через 3 минуты
6) Задание контекста данных переносите в XAML:
C#
16
17
18
19
20
21
22
        public MainWindow()
        {
            InitializeComponent();
            // DataContext = new BackGroundWorker();
            
            //new Task(()=> { Thread.Sleep(10000); Dispatcher.Invoke(new Action(() => NoteClasses.RemoveAt(3)));}).Start(); 
        }
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Name="window" x:Class="OrdersControl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Контроль_поручений"
        xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="835" MinWidth="835"
        DataContext="{DynamicResource vm}">
    <Window.Resources>
        <local:OrdersSourceViewModel x:Key="vm"/>
    </Window.Resources>
0
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
27.02.2023, 13:15  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Добавлено через 1 минуту
3) Класс NoteClass переобъявите так:
C#
12
13
    public class Order: BaseInpc
    {
А что значит BaseIncp?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 13:21
Цитата Сообщение от Mojor Посмотреть сообщение
А что значит BaseIncp?
Это класс отсюда: Простые реализации для тем на форуме

Про них уже написал:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
2) Добавьте в проект (лучше даже в отдельный проект типа "Библиотека классов для WPF") вот эти классы: Простые реализации для тем на форуме
Добавлено через 2 минуты
И ошибся в напиcани - BaseInpc.
Базовый класс с очень простой реализацией интерфейса INotifyPropertyChanged.
0
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
27.02.2023, 13:38  [ТС]
Вот это в библиотеку классов засунуть? Посмотрите пожалуйста в репозитории. Так?
Миниатюры
Оптимизация визуальной части  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 14:37
Цитата Сообщение от Mojor Посмотреть сообщение
Так?
Нет.
Просто из темы сделайте копипасту классов BaseInpc, RelayCommand и RelayCommand<T>.


Если из репозитория, то вот эти три файла:


Можете целиком проект SimplifiedImplementations перенести себе в Решение.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 14:42
И в проекте поменяйте на Framework 4.8
4.6 и 4.7 - это промежуточные версии.
Для старых нужен 4.0 или 4.5.
Для остальных 4.8.
0
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
27.02.2023, 17:26  [ТС]
Всё сделал

Добавлено через 45 минут
Как мне через RelayCommand передать LeftPanel?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2023, 18:22
Цитата Сообщение от Mojor Посмотреть сообщение
Всё сделал
Решение запускается?
0
3 / 3 / 2
Регистрация: 27.01.2021
Сообщений: 33
27.02.2023, 18:58  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Решение запускается?
Да, запускается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2023, 18:58

В сети попадаются такие виды исходников где обычно нету визуальной части программы.Приходится заново создавать процедуры,как можно всё упростить?
В сети попадаются такие виды исходников http://******************/faq/topic-156349.html ,где обычно нету визуальной части программы.Обычно...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии &quot;оптимизатора&quot; в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Оптимизация кода. Замер времени выполнения части кода.
Доброе утро. Есть желание посмотреть сколько времени занимает выполнение какого-то блока кода/отдельной функции или процедуры/программы...

PasswordDialog в не визуальной компоненте
Доброго времени суток! Разработать невизуальный компонент PasswordDialog, предназначенный для запроса строки пароля и его...

основы визуальной алгоритмизации
Всем привет в этом году поступила в ВУЗ, и столкнулась с небольшой трудностью, хотя для кого как. Есть некие задачи которые необходимо...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru