• С чего стоит начать изучение WPF?

    @d-stream
    Готовые решения - не подаю, но...
    Может лучше с книжки? Например Ч.Петцольд "WPF базовый курс"
    Ответ написан
    Комментировать
  • Dependecy Property в WPF?

    Nipheris
    @Nipheris Куратор тега C#
    Основная идея стара как само программирование - поставить одни значения в зависимость от других. Система свойств зависимостей - это вариант реализации реактивного программирования.
    Вот Эксель видели когда-нибудь? А формулами пользовались? При изменении значений в ячейках-источниках значения в ячейке с формулой автоматически пересчитывается. Вот это примерно то же самое.
    Ответ написан
    3 комментария
  • Быстрый переход к коду класса в Visual Studio 2015?

    @Sing303
    F12
    Ctrl+F12
    Ctrl+ЛКМ (Через решарпер)
    Ответ написан
    Комментировать
  • Быстрый переход к коду класса в Visual Studio 2015?

    GavriKos
    @GavriKos
    F12 в стандартной раскладке.
    Есть еще через Ctrl-click, но это вроде с расширениями.
    Ответ написан
    Комментировать
  • Как в UWP сделать экран-заставку?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    1. картинка добавляется в манифесте.
    2. Время продолжительности менять не нужно. Если долго запускается приложение - правьте код.
    Ответ написан
    2 комментария
  • Что делает этот кусок кода?

    Daniro_San
    @Daniro_San
    Программист
    Гуглите перегрузку операторов.
    Ответ написан
    Комментировать
  • Как обновлять ProgressBar в побочном потоке c#?

    Rou1997
    @Rou1997
    this.Invoke((MethodInvoker) delegate() {
         ProgressBar.PerformStep();
    });

    Понять очень просто, делегат это функция поэтому с круглыми и фигурными скобками, от обычной функции разница в том, что она используется как переменная (параметр метода), она передается в метод this.Invoke (это запомнить) чтобы он ее вызвал в потоке UI, а MethodInvoker просто приведение типа.

    Еще один вариант:
    this.Invoke((MethodInvoker) (() =>
    {
        ProgressBar.PerformStep();
    }));

    По сути, это вот такой код:
    this.Invoke((MethodInvoker) () =>
    {
        ProgressBar.PerformStep();
    });

    Где значением переменной (таким же, как 0.5, "abc" или new Button()) является следующее:
    () =>
    {
        ProgressBar.PerformStep();
    }

    Остальное - обычное приведение к MethodInvoker, зачем тогда эти скобки вокруг значения, мы же не пишем int x = (int)(0.5);, увы но при приведении типов вообще не всегда можно ограничиться круглым скобками лишь для типа и опустить их для приводимого значения, конечно можно об этом забыть и не скомпилируется, но с опытом уже знаешь, если приведение не компилируется, то нужно попробовать добавить скобки для значения.
    Ответ написан
    Комментировать
  • Как обновлять ProgressBar в побочном потоке c#?

    kykyryky
    @kykyryky
    В классе формы объявить объект типа IProgress и инициализировать, например в конструкторе:
    IProgress<int> progress;
    
    progress = new Progress((i) =>
                 {
                     progressBar.Value = i;
                 });


    Немного переделать метод calc:
    public Task calc(IProgress<int> progress)
    {
    return Task.Run(() =>
                {
                for (int i = 0; i < listToCalc.Count; i++) {
                    listOfWells.Add(new Well(listToCalc[i]));
                    listOfWells[i].calcP();
                    progress.Report(i)
                }
                });
            }


    В обработчике:
    private async void button3_Click(object sender, EventArgs e)
            {
                    ProgressBar.Maximum = listToCalc.Count;
                    ProgressBar.Value = 0;
                    ProgressBar.Step = 1;
                    listOfWells.Clear();
                    await calc();
                }

    Как-то так попробуй. Мог скобку потерять, или еще что по мелочи.
    Ответ написан
    Комментировать
  • Как в C# избежать исключения InvalidOperationException?

    petermzg
    @petermzg
    Самый лучший программист
    С элементами формы работа возможна только из потока в котором они созданы.
    Хотите обновлять progressBar, передавайте значение из своего вспомогательного потока в основной и он уже обновит progressBar
    Ответ написан
    1 комментарий
  • Перевод кода из Assembler в Pascal?

    Rou1997
    @Rou1997
    Если просто посмотреть, причем с малой точностью, то декомпиляторы ищите, но в Pascal вряд ли найдете, только в C/C++, а если восстановить исходный код и скомпилировать, то только вручную, используя декомпилятор и постепенно заменяя ассемблерные вставки на код Pascal, благо Pascal поддерживает ассемблерные вставки, поэтому можно "заставить" компилироваться и работать еще до полной декомпиляции.
    Ответ написан
    Комментировать
  • Delphi 7, Как создать бесконечно бегущую строку?

    AnnTHony
    @AnnTHony
    Интроверт
    var
      Form1: TForm1;
      list: TStringList;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      label1.Caption := '';
      label1.AutoSize := True;
      label1.Color := clInactiveBorder;
    
      list := TStringList.Create;
    
      list.Add('Титры');
      list.Add('Какой-то текст');
      list.Add('');
      list.Add('1');
      list.Add('2');
      list.Add('3');
      list.Add('');
      list.Add('4');
      list.Add('5');
    end;
    
    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
    begin
      list.Free;
    end;
    
    procedure MoveTitle();
    var
      item: string;
    begin
      while (True) do
        begin
          if (Form1.Button1.Tag = 0) then
            exit;
          Form1.Label1.Caption := '';
          for item in list do
            begin
              Form1.label1.Caption := Form1.label1.Caption + #13 + item;
            end;
    
          list.Insert(0, list[list.Count - 1]);
          list.Delete(list.Count - 1);
    
          Application.ProcessMessages;
          Sleep(500);
        end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if (button1.Tag = 0) then
        begin
          button1.Tag := 1;
          MoveTitle;
        end
      else
        button1.Tag := 0;
    end;
    Ответ написан
    Комментировать
  • Delphi 7, Как создать бесконечно бегущую строку?

    @kalapanga
    Формально под вопрос подходит вот такое элементарное решение:
    На форме TMemo высотой в Num строк (ровно или строк текста больше, чем строк на экране). Заполняем все Num строк, включая пустые. А дальше крутим их по таймеру:
    s := Memo1.Lines[Num-1];
    Memo1.Lines.Delete(Num-1);
    Memo1.Lines.Insert(0, s);
    Но, конечно, красивых (плавных) титров так не получишь.
    Ответ написан
    Комментировать
  • Delphi 7, Как преобразовать Строку в TDateTime?

    @kalapanga
    StrToDateTime использует для преобразования установленные на компе настройки локали. По-видимому, они отличаются от формата Ваших строк. Т.е. при настройках по-умолчанию для России дата ожидается с точками, а не слэшами. Вот и ошибка. Посмотрите хелп по StrToDateTime, в Delphi XE8 есть вот такой вариант этой функции:
    function StrToDateTime(const S: string; const AFormatSettings: TFormatSettings): TDateTime;
    Наверное и в D7 есть. Вот эти самые FormatSettings Вам и нужны. Примеры использования найти не проблема.

    Ну и пример уж больно хорош! Тридцатое февраля можно долго переводить! :)
    Ответ написан
    1 комментарий
  • Delphi 7, Как преобразовать Строку в TDateTime?

    @Farwisdomer
    Ответ написан
    Комментировать
  • Macros Word, как исправить ошибку?

    @rosperitus
    Подключить Microsoft Excel Object Library в Worde через Tools-References
    Ответ написан
    Комментировать
  • Подсобите написать код VBA для MS OFFICE?

    TomasHuk
    @TomasHuk
    Вроде работает:
    Sub Replace()
    
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "@here"
            .Replacement.Text = "^c"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    Ответ написан
    6 комментариев
  • С помощью каких тегов HTML создаются географические карты(Google maps)?

    nikolayshabalin
    @nikolayshabalin
    Автор профессиональных курсов в HTML Academy
    - Тег используется любой
    - HTML, JS
    - Почитать можно здесь

    P.S. Там в примерах просят "YOUR_API_KEY", не обращайте внимание с 3 версии google map api он не нужен.
    Ответ написан
    3 комментария
  • Java, нужны классы для работы с несколькими файлами?

    @zelan
    Кратко обо мне не получится.
    JFileChooser fileChooser = new JFileChooser();
            
            //возможность выбирать только директории
            fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            //выбор только одной директории
            fileChooser.setMultiSelectionEnabled(false);
    
            fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
    
            //открываем окно, и ждем статуса выбора файла
            int status = fileChooser.showOpenDialog(null);
            //если была нажата кнопка открыть
            if(status == JFileChooser.APPROVE_OPTION){
    
                //получаем выбранную дтректорию
                File dir = fileChooser.getSelectedFile();
    
                //делаешь проверки разные если нужно
                if(dir==null){
    
                }
                //если папка не существует
                if(dir.exists()==false){
    
                }
    
    
                //получаешь список файлов в указанной директории
                File[] files = dir.listFiles();
    
                for (File file : files) {
                    //делаешь с файлами что нужно, не забывай проверять является ли файл директорией или файлом.
                }
    
    
            }
    Ответ написан
    Комментировать
  • Объясните смысл идентификатора volatile в Java?

    @sirs
    то не проще будет присвоить объекту модификатор static?

    Нет, не проще. static поле принадлежит самому классу (объекту класс), а не объектам. Как вы будете его модифицировать?
    volatile позволяет увидеть изменения переменной во всех потоках сразу, однако не стоит забывать, что это верно только для атомарных операций!

    Если же вы ищете конкретное решение конкретной проблемы - посмотрите в сторону AtomicInteger, AtomicLong и т.д. если вам нужно что-то похожее на счетчики, в сторону ReentrantLock если у вас какой-то разделяемый ресурс, и в сторону ConcurrentHashMap если у вас коллекция, с которой должно работать множество потоков...
    Ответ написан
    Комментировать
  • Для чего нужны свойства зависимости?

    Все предельно просто - dependency properties это попытка получить реактивное программирование конкретно в рамках WPF и с минимальными затратами (без модификаций на уровне языков/платформы .net).

    Вы формулами в Экселе когда-нибудь пользовались? Вида =A1+A2+A3? Когда обновляешь ячейку A1 и автоматически обновляются все значения, вычисляемые по формулам, в которых встречается A1. Вот это примерно то же самое. Почему это так важно в WPF? Потому что а) это естественный способ связи свойств визуальных компонент друг с другом и с ViewModel-ью - без свойств зависимостей обновление зависимых значений превращается в адские цепочки Refresh-ей, Recalc-ов и прочего, и дай бог не забыть вызвать все нужные пересчеты. б) это дает механизм абстрагированной обработки и изменения свойств объектов (как правило - контролов), более производительный и узкоспециализированный по сравнению со стандартной рефлексией. Это, в свою очередь, обеспечивает возможность без лишних заморочек написать классы вроде DoubleAnimation, с помощью которого можно анимировать ЛЮБОЕ (!) свойство типа double у любого объекта, лишь бы оно было dependency property.
    Ответ написан
    Комментировать