Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Szukam zespołu pasjonatów do projektu a potem realizacji programu non-profit

Idź do strony Poprzedni  1, 2, 3 ... , 25, 26, 27  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Wto Maj 29, 2018 12:19 pm      Temat postu: Odpowiedz z cytatem Pisownia

Umieszczam na formularzu Picture, który nie mieści się w oknie (celowo). W związku z tym jego granice kończą się przy prawym i dolnym brzegu okna. Chciałbym osiągnąć następujący efekt:
Obramowanie obrazka ma mieć określone rozmiary i powiększając okno Resize musi go rozciągać pokazując coraz większą część obrazka. Nie wiem czy jasno opisałem. Załączam rysunek poglądowy.
Jak to zrobić ?



screen.jpg
 Opis:

Pobierz
 Nazwa pliku:  screen.jpg
 Wielkość pliku:  27.69 KB
 Pobierano:  18 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Wto Maj 29, 2018 10:02 pm      Temat postu: Odpowiedz z cytatem Pisownia

1. Na formę wstawiasz kontrolkę PictureBox . Załóżmy, że kontrolka na formie ma wymiary 40x40 jednostek.
2. Ustawiasz jej właściwość SizeMode na Normal, która ma takie działanie, że jeśli wstwisz do niej obrazek większy, niż 40x40 pikseli, to pokazywany będzie tylko jej lewy górny fragment.
3. Jeśli w chwili powiększenia okna programu na przykład o 50% ma się pojawiać większa część obrazka w polu PictureBox, to w procedurze Resize formy zwiększasz wymiary pola PictureBox o tę sama skalę, co skala powiększenia okna. Pole obrazu w chwili powiększania okna programu proporcjonalnie się powiększy, a zawarty w nim obrazek zostanie odsłonięty w większym stopniu.
4. Oznacza to, że podczas zmniejszania wielkości okna programu powinno zajść sytuacja odwrotna, co oznacza, że w procedurze Resize przeliczanie wielkości pola obrazu powinno się odbywać poprzez procentowy współczynnik.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Nie Cze 24, 2018 12:28 pm      Temat postu: Odpowiedz z cytatem Pisownia

Mam RulerControl.dll (przykład wykorzystuje Forms a nie WPF. Czy mogę jakoś podpiąć ją do aplikacji i skorzystać z funkcji. Demo wygląda idealnie na moje potrzeby, nie potrafię jednak z tego skorzystać. Jeśli się da to jak ?

Wszystko jest tutaj: https://www.codeproject.com/Articles/4369/Ruler-Control
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Nie Cze 24, 2018 9:54 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jeśli ściągnąłeś tę kontrolkę, to myślę, że po otwarciu twojego projektu powinieneś do niej w projekcie dodać referencje.
Jeśli referencja będzie skutecznie dodana to kontrolka ta powinna pojawić się w zasobniku ToolBox

Jak dodać kontrolkę do projektu

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Wto Cze 26, 2018 9:42 am      Temat postu: Odpowiedz z cytatem Pisownia

Dzięki Samolot. Jeszcze tego nie sprawdzałem bo borykam się z jeszcze jednym problemem. W zasadzie chciałbym już ukończyć zmiany w pasku narzędzi i mam jeden dylemat. Żeby aplikacja była w pełni samodzielna muszę zaimplementować możliwość usuwania plików z etykietkami (labels set *.ELD) i plików z definicjami szablonóe (templates *.ELT). Wymyśliłem, że w sekcjach Labels set i Templates paska narzędzi dodam button "X" i będę wybierał pliki do usunięcia za pomocą openFileDialog. Zrobiłem to, wszystko działa ale mam nieodparte wrażenie, że nie jest to dobre i klarowne dla użytkownika rozwiązanie. Poza tym buttony openFileDialog mają tekst "Otwórz" (lub "Open"), fajnie by było gdyby miały "Delete".
Może jakaś podpowiedź jak to zrobić sensowniej ? Załączam wygląd paska narzędzi.



el_question.jpg
 Opis:

Pobierz
 Nazwa pliku:  el_question.jpg
 Wielkość pliku:  108.38 KB
 Pobierano:  13 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Wto Cze 26, 2018 8:15 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
Poza tym buttony openFileDialog mają tekst "Otwórz" (lub "Open"), fajnie by było gdyby miały "Delete".

To co się ukaże w tytule okna dialogowego, możesz ustawić. U mnie wstawiłem na formę okno OpenFileDialog, i gdybym nie ustawił jego właściwości .Title odpowiadającego za napis nagłówkowy, to ono domyślnie by wyświetliło napis "Open". Więc podstaw tam napis Delete. To w tytule oka. Natomiast wybór pliku zatwierdzasz przyciskiem z neutralnie brzmiącym napisem "OK". Okno dialogowe zwróci ci tylko ścieżkę do pliku, a kod, który go usunie, tworzysz po zamknięciu OpenFileDialog.

Z załączonego obrazka wnoszę, że zamierzasz usuwać pliki w ten sposób, że zaznaczasz jego nazwę w polu u góry formy. Jeśli tak, to chyba lepiej, jeśli we właściwości .InitialDirectory okna dialogowego wstawisz ścieżkę do katalogu z tymi plikami, a okno dialogowe listę tych plików pokaże. Ale może już tak masz.



Przykładowa funkcja ustawiająca parametry okna dialogowego:
Kod:
    Private Function Otworz_Okno(ByVal FolderStart As String, ByVal Opcja As String, ByVal Wersja As String) As String
        Otworz_Okno = ""
        Dim FullSciezka As String = "", Rezultat As DialogResult = Nothing
        Try
            If Opcja = "Open" Then
                With OD_Otworz
                    .InitialDirectory = FolderStart                                                         'Ustal katalog startowy okna odczytu plików obmiarów
                    .Filter = Tworz_FiltrObmiarow()                                                         'Ustaw filtr oknu dialogowemu
                    .FilterIndex = 0                                                                        'ustsaw indeks filtra na pierwszy elelemnt
                    If Wersja = "01" Then .Title = "Otwórz zestawienie (wer.01) typu:  " & UST.TypObl.Nazwa 'ustaw tytuł okna dialogowego
                    If Wersja = "02" Then .Title = "Otwórz zestawienie (wer.02) typu:  " & UST.TypObl.Nazwa
                    .FileName = ""                                                                          'To zdezaktywowałem bo użytkownik ma sam wybrać
                    Rezultat = .ShowDialog()                                                                'pokaż okno zapisu: "OD_Otworz"
                    FullSciezka = .FileName
                End With
            End If
            If Opcja = "Save" Then
                With OD_Zapis
                    .InitialDirectory = FolderStart                                    'Ustal katalog startowy okna odczytu plików obmiarów
                    .Filter = Tworz_FiltrObmiarow()                                    'Ustaw filtr oknu dialogowemu
                    .FilterIndex = 0                                                   'ustaw indeks filtra na pierwszy elelemnt
                    .Title = "Zapisz zestawienie (wer.01) typu:  " & UST.TypObl.Nazwa  'ustaw tytuł okna dialogowego
                    .FileName = ""                                                     'To zdezaktywowałem bo użytkownik ma sam wybrać
                    Rezultat = .ShowDialog()                                           'pokaż okno zapisu: "OD_Otworz"
                    FullSciezka = .FileName
                End With
            End If

            Return FullSciezka
        Catch Ex As Exception
            Dim LiczbaZn As Integer = My.Application.Info.ProductName.Length
            Dim TytPr As String = My.Application.Info.ProductName.Substring(0, LiczbaZn - 1)
            MessageBox.Show(Ex.Message & vbNewLine & Ex.StackTrace, TytPr)
        End Try
    End Function

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Wto Cze 26, 2018 11:04 pm      Temat postu: Odpowiedz z cytatem Pisownia

Kod mam taki:
Kod:

        private void LabelSet_delete_Click(object sender, RoutedEventArgs e)
        {
            String txtFileName, pathAndFileName;
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Labels set (*.eld)|*.eld";
            openFileDialog.InitialDirectory = Globals.baseDir + @"\Data\";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Title = "Delete labels set ELD";

            if (openFileDialog.ShowDialog() == true)
            {
                txtFileName = System.IO.Path.GetFileNameWithoutExtension(openFileDialog.SafeFileName);
                pathAndFileName = openFileDialog.FileName;
                if (File.Exists(pathAndFileName))
                {
                    var result = System.Windows.MessageBox.Show("Are you sure to delete labels set " + txtFileName + ".ELD ?", Globals.ApplicationName, MessageBoxButton.YesNo, MessageBoxImage.Warning);
                    if (result == MessageBoxResult.No) return;
                    {
                        System.Windows.MessageBox.Show(pathAndFileName);
                        System.IO.File.Delete(pathAndFileName);
                    }
                }
            }
        }



Nazwy plików do usunięcia wybieram w openFileDialog ponieważ w polach tekstowych wyświetlane nazwy:
LabelSet - podaje nazwę aktualnie edytowanego pliku z danymi
Templaee - podaje nazwę szablonu aktualnie edytowanej etykietki

Rozważałem jakieś combo z oczytanymi nazwami plików i "X" ale jakoś odpuściłem to rozwiązanie.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Wto Lip 24, 2018 9:01 pm      Temat postu: Odpowiedz z cytatem Pisownia

Znalzłem kod do NumericUpDown - kontrolka nazywa się NumericSpinner
tu do obejrzenia: https://stopbyte.com/t/free-wpf-numeric-spinner-numericupdown/499

w projekcie dodałem:
Kod:
xmlns:my="clr-namespace:Stopbyte.Controls"

no i wstawiłem kontrolkę:
Kod:
<my:NumericSpinner
    x:Name="Test"
    Value="5.0"
    MinValue="0"
    MaxValue="16"
    Decimals="1"
    Height="24"
    Step="0.1"
    Margin="840,128,275,477"/>

Wszystko ładnie ale kiedy nacisnę strzałkę w dół lub górę to wywala:
Nieobsługiwany wyjątek:
System.NullReferenceException: „Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.”

W kodzie zaznacza tę linijkę:
Kod:
public decimal Value    
{
    get { return (decimal)GetValue(ValueProperty); }
    set
    {
        if (value < MinValue)
            value = MinValue;
        if (value > MaxValue)
            value = MaxValue;
        SetValue(ValueProperty, value);
    ====>    ValueChanged(this,new EventArgs());
    }    
}


Co robię źle ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Wto Lip 24, 2018 11:17 pm      Temat postu: Odpowiedz z cytatem Pisownia

Prawdopodobnie w projekcie musisz jeszcze dodać referencje do biblioteki DLL tej kontrolki, bo twoje środowisko bez tego nie rozpoznaje jej elementów. Nie jest to bowiem oryginalna kontrolka twojego środowiska projektowego, lecz dodana "z zewnątrz".
_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 149

PostWysłany: Sro Lip 25, 2018 7:54 am      Temat postu: Odpowiedz z cytatem Pisownia

Dziękuję Samolot.

Dodając kod do projektu chciałem uniknąć DLL'ki. Ogólnie to chciałem się pozbyć WPF Ext. Toolkit i związanej z nim DLL, żeby pozostawić tylko EXE.
W opisie kontrolki na stronie nigdzie nie wspominano o żadnej DLL więc wydawało mi się, że nic nie jest potrzebne. Cóż, poszukam może innego kodu, który da się zaimplementować bez dodatkowych DLL.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)
Idź do strony Poprzedni  1, 2, 3 ... , 25, 26, 27  Następny
Strona 26 z 27

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.18530 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |